Gar nicht. Mach es wie RFT es geschrieben hat, da hast du definitiv mehr von.
Beiträge von Goldkiller
-
-
Wieso solltest du die definieren? Du weisst schon,dass es takeid und money nur Lokal in der Funktion selber gibt.
Irgendwo in deinem Script musst du doch die ID bekommen und den Geldbetrag dem du einem Spieler geben möchtest.
Ich hab aber irgendwie das Gefühl,dir fehlen die Grundlagen :-O -
...
stock BUeber(playerid, takeid, money) {
SpielerInfo[takeid][BEuro]+=money;
SpielerInfo[playerid][BEuro]-=money;
return 1;
}
Wieso machst du es nicht einfach so,sondern mit Strings? Ist doch völlig überflüssig :\.
Hast dir meinen Post wohl nicht so ganz genau angeschaut. -
BUeber(playerid,pID,""); //1073
BUeber(playerid,"",money);//1091
Ich gehe fest davon aus,dass playerid und money keine Arrays bzw String sind.Außerdem wird es vllt zu Fehlern kommen,wenn du Leere Strings übergibst.
Die Funktion ist sowieso totaler mist wenn Ich mir das ansehe,verstehe nicht wieso du es so machst.
stock BUeber(playerid, takeid, money) {
SpielerInfo[takeid][BEuro]+=money;
SpielerInfo[playerid][BEuro]-=money;
return 1;
}
Wieso machst du es nicht einfach so,sondern mit Strings? Ist doch völlig überflüssig :\. -
Was du eigentlich willst,ist Stunden in Millisekunden.Der Threadtitel passt also nicht ganz.RFT hat dir zwar schon die Lösung gepostet,aber überleg doch mal.
Von Std in Min ist * 60
Von Min in Sek ist * 60
Von Sek in MSek ist * 1000
Also STD * 60 * 60 * 1000.
Vielleicht hilft dir das, und du musst demnächst nicht mehr fragen -
stock ConvertSec(secs,&sec,&min,&hour) {
new
rest;
sec = 0;
min = 0;
hour = 0;
hour = (secs / (60*60));
rest = (secs % (60*60));
min = (rest / 60);
sec = (rest % 60);
return 1;
}
Modulo zu nutzen ist viel besser.Hab es vorher bei dieser Funktion auch mit while() gemacht,bis Ich gemerkt hatte, wie viel langsamer es im Vergleich zu Modulo ist. -
format(string, sizeof string, "%02d:%02d", hour, minute);
Abgesehen davon,du erstellst immer ein neuen Textdraw und löschst den Alten nicht. Die Texte werden sich bei dir immer überschneiden, irgendwann läuft auch der TextDraw speicher voll und es werden keine neuen mehr erstellt.Erstell den Textdraw einmalig beim starten des Gamemodes und unter clock() änderst du lediglich den Text des Textdraws mit TextDrawSetString().
-
naja bei dynamisch scripten geht es darum dass du z.B: ein pickup ingame erstellen kannst und nciht extra den server abschalten musst und erst reinscriptest. Natürlich soll das Pickup dann auch nach server restart erhalten bleiben (in mysql datenbank z.B)
Würde Ich jetzt nicht unbedingt sagen.Ingame ist vllt etwas übertrieben, aber zB das Daten aus Datein geladen werden ( sei is Datenbank oder Scriptfiles ) und nicht fest im Gamemode enthalten sind, siehe Godfather.Da ist alles sehr sehr schlimm zusammengescriptet.
Generell würde Ich sagen,dass man nicht neu compilieren muss,nur um einige Einträge hinzuzufügen / entfernen für Autos,Objekte, oder etwas selbstgescriptetes wie Rennen,Propertys usw. -
Siehst ja im Tutorial,dass Ich ZCMD empfehle. Kannst dir aber einen Test von mir anschauen,
http://forum.sa-mp.de/wbb/san-…-include-ocmd/#post445162Zitatvon dcmd & strcmp habe ich gehört das es ziemlich resourcenfressent ist und voll lahm
DCMD benutzt strcmp. DCMD ist auch nicht unbedingt langsamer als die Methode verwendet in ZCMD.Es kommt drauf an, wieviele Commands man hat.Trotzdem, nimm lieber ZCMD als DCMD.Dazu dann noch sscanf und du wirst die aktuellsten Techniken benutzen. -
Super Thread,wirklich !
-
Wenn du einen Linux Server hast,musst du in die Server CFG hinter dem Plugin-Namen noch .so anfügen.
Also, streamer.so.//Edit: Zu langsam
-
Zitat
[22:00:27] Loading plugin: YSF
[22:00:27] Failed (plugins/YSF: cannot open shared object file: No such file or directory)
[22:00:27] Loading plugin: streamer
[22:00:27] Failed (plugins/streamer: cannot open shared object file: No such file or directory)
[22:00:27] Loading plugin: GeoIP_Plugin
[22:00:27] GeoIP_Plugin got loaded.
[22:00:27] Loaded.
[22:00:27] Loaded 1 plugins.
...
[22:00:27] Script[gamemodes/SATDM_v9.amx]: Run time error 19: "File or function is not found"
"File or function is not found" haben die meisten,wenn ihnen Plugins fehlen.So ist es auch bei dir.Dir fehlen 2 Plugins, YSF und streamer.
Hättest du dir die Log mal selber genauer durchgelesen,hättest du das schon längst gemerkt.[Plugin] [REL] Streamer Plugin v2.5
[Plugin] YSF 0.3 - Full Linux -
new Wang[12][0] = {
Der Fehler liegt dort.Denn die 0 ist falsch.
Mach daraus
new Wang[][] = {
,dass gleiche auch beim Array GPS.
Kannst diese auch als const erstellen,vorrausgesetzt du willst nicht,dass man die Liste bearbeitet während der Server läuft. -
Zitat
[Wed Nov 17 16:49:38 2010] Function: mysql_query executed: "SELECT * FROM cars WHERE Carid='ÌÜ°'" with result: "0".
Daraus solltest du erkennen können,dass du irgendwas falsch formatierst!
format(bedienung,sizeof(bedienung),"Carid='%s'",carid);
carid ist definitiv bei dir kein String,daher ist der Platzhalter %s auch falsch.Ersetzte es durch %d.Du kannst es aber auch direkt in query formatieren,verstehe nicht wieso du extra Variablen dafür erstellst.
format(query,sizeof(query),"SELECT * FROM cars WHERE Carid='%d'",carid); -
Wie Ich finde auch eine sehr gelungene Map.Wäre es möglich,von dir die Position für die Teleports zu bekommen?
Hab gesehen,dass Ingame an einigen Stellen die Info-Objekte sind ( Nehme an dort sind Teleports ??? ), aber wo genau die hinführen würde mich interessieren.Musst mich leider durch das manuelle Teleportieren im Gebäude umsehen :D.
Kann man echt nur empfehlen die Map . -
Gefällt mir auch sehr sehr gut! Mir ist aber eine kleine Sache aufgefallen,Ich hab mal ein Bild dazu erstellt.Da erkennt man viel besser was Ich meine :p
Da ist aus welchem Grund auch immer eine Lücke ( Roter Bereich ). Ich kann mir nicht vorstellen,dass du den extra frei gelassen hast.Ich würde es wirklich besser finden,wenn du die Wände ( Blauer Bereich ) nach Links verschiebst, sodass die Lücke verschwindet.Ich hab es mir ja Ingame angeschaut,es müsste eigentlich rechts beim Eingang auch genug Platz sein,um die Blaue Ebene nach Links zu verschieben.Würde mich freuen wenn du dass änderst , bin nicht gerade gut im Umgang mit dem MTA Map Editor ( Kann nur mit dem MEd umgehen ). Trotzdem,super Arbeit!Weiter so^^
-
Du hast aber nicht,
public PayDay(i) { ... }
gemacht oder?
Denn du sollst es ohne jeglichen Parameter haben,also
public PayDay() { ... }Falls es doch schon so hast,dann hast du wohl irgendwo i als Globale Variable definitiert oder irgendwo als Parameter.Würde ausreichen wenn du dann anstatt den Variablennamen i irgendetwas anderes für den Laufindex benutzt,bsp p.
for(new p = 0; p < MAX_PLAYERS; p++) -
public PayDay(playerid)
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
Wozu hast du denn die playerid als Parameter?
Du hast da viel vertauscht,mal benutzt du playerid, danach wieder i.
Entfern den playerid Parameter aus der Funktion und ersetzte es überall mit i. -
Du brauchst folgende Funktion,
http://wiki.sa-mp.com/wiki/LinkVehicleToInterior
new
vehicleid;
vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid) {
SetPlayerInterior(playerid,4);
LinkVehicleToInterior(vehicleid,4);
SetVehiclePos(vehicleid,1444.6,-664.5,1053.5); // 8Track
}
Mit LinkVehicleToInterior verschiebst du die gegebene VehicleID in ein neues Interior. -
Was hat es für einen Sinn,dass unter OnPlayerUpdate zu haben?
Du weisst schon,dass OnPlayerUpdate ~ zwischen 20 und 30 mal pro Sekunden aufgerufen wird,wenn der Spieler sich bewegt usw. ?
Entfern das mal lieber,denn der Streamer updatet sowieso alles für dich Automatisch.Hast du irgendwelche Configuration in deinem Script vorgenommen für den Streamer ?
zB:
Streamer_TickRate(271);
Streamer_MaxItems(STREAMER_TYPE_OBJECT,2500);
Streamer_VisibleItems(STREAMER_TYPE_OBJECT,MAX_OBJECTS - 10);