Ämne: Skapa Atg-fil
Visa ett inlägg
Gammal 2019-07-03, 14:48   #5
MoniMakerApp
 
MoniMakerApps avatar
 
Reg.datum: jan 2015
Inlägg: 98
Sharp$: 1252
Standard

Hej,

Steg ett är att skapa kuponger av dina enkelrader. D.v.s. slå ihop rader som kan utgöra en matematisk kupong. Detta för att inte riskera att ditt spel blir klassat som robotspel av ATG. Om du håller dig under gränserna för robotspel så kan du nog bortse från detta steg men det kan ändå vara trevligt att hålla nere filstorleken genom ett färre antal kuponger. En kupong per enkelrad blir ju onödigt stor och "klumpig" att tugga igenom vid inlämning. Att skapa en algoritm som genererar minsta antalet kuponger från en given mängd (dina framreducerade) enkelrader är inte trivialt, det är faktiskt ett NP-Hard problem, men att skapa en algoritm som hittar en lösning d.v.s. täcker in alla dina rader på ett färre antal kuponger (ej nödvändigtvis på minsta antalet kuponger) är möjligt och får väl anses som tillräckligt bra i sammanhanget. https://stackoverflow.com/questions/...tesian-product Huvudsaken är ju att alla dina rader blir inlämnade korrekt.

Steg två är sedan att skapa en xml-fil med dina kuponger enligt atg:s xml-kontrakt, d.v.s. enligt schema-definition (XSD-filen). För att sedan xml-filen ska accepteras av atg vid filinlämning behöver du räkna ut en checksumma på filen enligt CRC16 och avsluta filnamnet med en fyra tecken lång checksumma (före .xml) enligt följande mall: <filnamn><checksumma>.xml

ATG kommer då att validera filinnehållet mot checksumman.
Är checksumman felaktig, eller om den utelämnats, kommer en varning visas vid uppladdning om att filinnehållet kan ha förändrats. Denna varning kan dock ignoreras och spelen kan läggas ändå.

Själva checksumman baseras på en CRC16-beräkning på hela filens innehåll. En enkel Java-implementation för generering av checksumman finns här: http://introcs.cs.princeton.edu/java/61data/CRC16.java

Det kan nog vara lite trixigt att göra allt detta i Excel med macron, men förmodligen inte omöjligt...


Exempel:

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<issuer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="https://www.atg.se/services/schemas/filebet/1.8.2/atg_filebetting.xsd"
	company="Name of the company that generated this file" product="Name of the product that generated this file"
    version="Version of the product that generated this file"
	createddate="2016-11-29" createdtime="11:59:39" schemaversion="ATG File Betting XSD ver 1.8">
	<betcoupons>
		<gs75Coupon couponid="1" date="2016-11-29" betmultiplier="1">
			<leg legno="1" marks="000010000000000" r1="4" r2="8" />
			<leg legno="2" marks="000001000000000" r1="1" r2="3" />
			<leg legno="3" marks="000100000000000" r1="3" r2="2" />
			<leg legno="4" marks="001000000000000" r1="2" r2="8" />
			<leg legno="5" marks="111111111100000" r1="6" r2="9" />
			<leg legno="6" marks="000001000000000" r1="9" r2="1" />
			<leg legno="7" marks="101111001100000" r1="8" r2="2" />
		</gs75Coupon>
		<gs75Coupon couponid="2" date="2016-11-29" betmultiplier="1">
			<leg legno="1" marks="000100010000000" r1="7" r2="9" />
			<leg legno="2" marks="000001000000000" r1="1" r2="3" />
			<leg legno="3" marks="000100000000000" r1="3" r2="2" />
			<leg legno="4" marks="001000000000000" r1="2" r2="8" />
			<leg legno="5" marks="101001011100000" r1="4" r2="5" />
			<leg legno="6" marks="000001000000000" r1="9" r2="1" />
			<leg legno="7" marks="101111001100000" r1="8" r2="2" />
		</gs75Coupon>
		<gs75Coupon couponid="3" date="2016-11-29" betmultiplier="1">
			<leg legno="1" marks="001000101000000" />
			<leg legno="2" marks="000001000000000" r1="1" />
			<leg legno="3" marks="000100000000000" r1="3" r2="2" />
			<leg legno="4" marks="001000000000000" />
			<leg legno="5" marks="110110100110000" />
			<leg legno="6" marks="000001000000000" />
			<leg legno="7" marks="101100001000000" />
		</gs75Coupon>
	</betcoupons>
</issuer>
MoniMakerApp är inte uppkopplad   Ge poäng Svara med citat