Ja dann fügste halt die Abfrage in OnPlayerSpawn, wo ist das Problem
Beiträge von Templer
-
-
das is deine Sache
-
ja Indem du einfach das Tutorial nicht mit einer Wiederholung aufrufst, sondern immer wieder den Timer neu startest
Also beim einloggen änderst du
gTutorialTimer[playerid] = SetTimerEx("tutorial", 15000, 1,"d", playerid);
um in
CallLocalFunction("tutorial", "d", playerid);und bei deinem public tutorial siehst du am ende von jedem Text das ich einen Kommentar geschrieben habe ^^.
Natürlich würde es besser gehen, aber egal..
Nebenbei löscht du auch am besten den KillTimer ganz unten, was ich auch kommentiert habe und wenn du das tust auch die Zeile:
new gTutorialTimer[MAX_PLAYERS];
löschen.Also hier die public ^^:
public tutorial(playerid)
{
switch(gTutorialCount[playerid])
{
case 1: //Text #1
{
GameTextForPlayer(playerid,"~w~Willkommen~n~~b~Tutorial: ~g~Startet",3000,3);
tutorialtext[playerid] = Create3DTextLabel("<Im Tutorial>",gelb,0,0,0,70.5,1);
Attach3DTextLabelToPlayer(tutorialtext[playerid], playerid, 0.0, 0.0, 0.30);
TogglePlayerControllable(playerid,0);
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, braun, "[_______________ Willkommen _____________");
SendClientMessage(playerid, orange, "Willkommen auf 'LS-TDM Street Fights' Server.");
SendClientMessage(playerid, orange, "Wie ich erkenne bist du neu hier :)");
SendClientMessage(playerid, orange, "Natürlich denkst du dir was macht ein Tutorial auf");
SendClientMessage(playerid, orange, "TDM Server? Nun ja Kurz und Knapp 'Wir wollen was Neuartiges'");
SendClientMessage(playerid, orange, "Darstellen. Nun wird dir das wichtigste erklärt :)");
SetTimerEx("tutorial", 2000, 0, "d", playerid); //In 2 Sekunden wird tutorial nochmal aufgerufen
}
case 2: //Text#2
{
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, braun, "[_______________ Informationen _____________");
SendClientMessage(playerid, orange, "TDM Street Fights ist ein Team Deathmatch server");
SendClientMessage(playerid, orange, "Unser Scripter ist [PoB]PaLL und der Mapper [PoB]XNike");
SendClientMessage(playerid, orange, "Support/Admin ist [PoB]SonY. Wir Kümmern uns Liebevoll,");
SendClientMessage(playerid, orange, "darum das ihr hier eine schöne zeit habt. fals du fragen hast");
SendClientMessage(playerid, orange, "Steht ein Admin/Support gern zuverfügung, Befehle findes du unter /Befehle");
SetTimerEx("tutorial", 5000, 0, "d", playerid); //In 5 Sekunden wird tutorial nochmal aufgerufen
}
case 3: //Text#3
{
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, braun, "[_______________ Cheaten & Bugusing _____________");
SendClientMessage(playerid, orange, "Das Cheaten oder Bugusing ist auf den Server Strengsten untersagt!.");
SendClientMessage(playerid, orange, "Dies wird mit einen PERM. Ban/Warn sogesagt Belohnt!");
SendClientMessage(playerid, orange, "Zudem ist auch das Parken auf anderen User untersaget");
SendClientMessage(playerid, orange, "Solltes du mehr über regeln wissen möchten Tipp /regeln ein!");
SetTimerEx("tutorial", 3000, 0, "d", playerid); //In 3 Sekunden wird tutorial nochmal aufgerufen
}
case 4: //Text#4
{
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, braun, "[_______________ Das Rang System _____________");
SendClientMessage(playerid, orange, "Du Starte hier mit den Rang 1 (Noob)");
SendClientMessage(playerid, orange, "Unter /ränge kannst du gucken was du alles mit dein Rang");
SendClientMessage(playerid, orange, "Kannst. Wie Waffenkaufen, Fahrzeuge fahren und und und!");
SetTimerEx("tutorial", 6000, 0, "d", playerid); //In 6 Sekunden wird tutorial nochmal aufgerufen
}
case 5: //Text#5
{
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, braun, "[_______________ Wichtiges _____________");
SendClientMessage(playerid, orange, "User mit <Im Tutorial> angreifen ist Verboten.");
SendClientMessage(playerid, orange, "Admins die in Duty sind auch ebenfals nicht anzugreifen.");
SendClientMessage(playerid, orange, "ei mistachtung Folgt eine Verwarnung!");
SendClientMessage(playerid, orange, "Bitte les dir nach dem Tutorial die Regeln durch. (/regeln)");
SetTimerEx("tutorial", 8000, 0, "d", playerid); //In 8 Sekunden wird tutorial nochmal aufgerufen
}
default: //Letzer Text
{
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
SendClientMessage(playerid, orange, " ");
GameTextForPlayer(playerid,"~r~E~n~~g~N~n~~b~D~n~~y~E",3000,3);
SendClientMessage(playerid, braun, "[_______________ Das Ende _____________]");
SendClientMessage(playerid, orange, "Regeln findes du unter /regeln");
SendClientMessage(playerid, orange, "Weiter hilfe findes du unter /help");
SendClientMessage(playerid, orange, "Nochmals unser Webseite unten link zusehen!!!");
SendClientMessage(playerid, orange, "Wir wünschen dir viel Spaß auf unserem Server");
PlayerInfo[playerid][pTutorial] = 1;
TogglePlayerControllable(playerid,1);
Delete3DTextLabel(tutorialtext[playerid]);
//Hier muss man nichtmehr es aufrufen, da es nun zu ende is ^^
//Nebenbei kannst du (musst aber nicht), dass KillTimer auch löschen bzw. auskommentieren.
KillTimer(gTutorialTimer[playerid]);
}
}
gTutorialCount[playerid]++; //Zählt eins rauf
} -
Dudalus, was is mit dir los? Das ist ja schon zum schämen Ich glaube du hast nichtmehr den Überblick was, wie ist ^^... Jetzt weißte sicher nochmehr, warum ich damals dir von FDaten[MAX_VEHICLES] abgeraten hab, oder? Nagut hier die Lösung..
Nebenbei noch, es reicht vollkommen aus SaveTuner bei OnVehicleMod aufzurufen ^^.
stock GetPrivatCarID(vehicleid)
{
for(new pid = 0; pid < _cache_fahrzeug; pid++)
{
if(vehicleid == FDaten[pid][fCarID]) return pid;
}
return -1;
}//OnVehicleDeath
public OnVehicleDeath(vehicleid, killerid)
{
SaveTuner(GetPrivatCarID(vehicleid));
return 1;
}//OnVehicleSpawn
public OnVehicleSpawn(vehicleid)
{
PrivatCarTuneUp(GetPrivatCarID(vehicleid));
return 1;
}public PrivatCarTuneUp(id)
{
if(FDaten[id][fTunbar] == 1)
{
new vehicleid = FDaten[id][fCarID];
if(FDaten[id][fTuningteil0] != 0) {AddVehicleComponent(vehicleid, component[0]);}
if(FDaten[id][fTuningteil1] != 0) {AddVehicleComponent(vehicleid, component[1]);}
if(FDaten[id][fTuningteil2] != 0) {AddVehicleComponent(vehicleid, component[2]);}
if(FDaten[id][fTuningteil3] != 0) {AddVehicleComponent(vehicleid, component[3]);}
if(FDaten[id][fTuningteil4] != 0) {AddVehicleComponent(vehicleid, component[4]);}
if(FDaten[id][fTuningteil5] != 0) {AddVehicleComponent(vehicleid, component[5]);}
if(FDaten[id][fTuningteil6] != 0) {AddVehicleComponent(vehicleid, component[6]);}
if(FDaten[id][fTuningteil7] != 0) {AddVehicleComponent(vehicleid, component[7]);}
if(FDaten[id][fTuningteil8] != 0) {AddVehicleComponent(vehicleid, component[8]);}
if(FDaten[id][fTuningteil9] != 0) {AddVehicleComponent(vehicleid, component[9]);}
if(FDaten[id][fTuningteil10] != 0) {AddVehicleComponent(vehicleid, component[10]);}
if(FDaten[id][fTuningteil11] != 0) {AddVehicleComponent(vehicleid, component[11]);}
if(FDaten[id][fTuningteil12] != 0) {AddVehicleComponent(vehicleid, component[12]);}
if(FDaten[id][fTuningteil13] != 0) {AddVehicleComponent(vehicleid, component[13]);}
}
return 1;
}public SaveTuner(id)
{
new vehicleid = FDaten[id][fCarID];
FDaten[i][fTuningteil0] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_SPOILER);
FDaten[i][fTuningteil1] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_HOOD);
FDaten[i][fTuningteil2] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_ROOF);
FDaten[i][fTuningteil3] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_SIDESKIRT);
FDaten[i][fTuningteil4] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_LAMPS);
FDaten[i][fTuningteil5] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_NITRO);
FDaten[i][fTuningteil6] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_EXHAUST);
FDaten[i][fTuningteil7] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_WHEELS);
FDaten[i][fTuningteil8] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_STEREO);
FDaten[i][fTuningteil9] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_HYDRAULICS);
FDaten[i][fTuningteil10] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_FRONT_BUMPER);
FDaten[i][fTuningteil11] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_REAR_BUMPER);
FDaten[i][fTuningteil12] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_VENT_RIGHT);
FDaten[i][fTuningteil13] = GetVehicleComponentInSlot(vehicleid, CARMODTYPE_VENT_LEFT);
SaveCache();
return 1;
} -
new name1[MAX_PLAYER_NAME];
new onlinestring1[MAX_PLAYER_NAME*MAX_PLAYERS];
new onlinestring[100];
format(onlinestring, sizeof(onlinestring), "test/Others/whoisonline.ini");
new File:onlinestatus = fopen(onlinestring, io_read);
if(onlinestatus)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
GetPlayerName(i, name1, sizeof(name1));
format(onlinestring, sizeof(onlinestring),"%s(%d)\r\n", name1, i);
strcat(onlinestring1, onlinestring);
}
fwrite(onlinestatus, onlinestring1);
fclose(onlinestatus)
} -
die Groß und Kleinschreibung! Hab ich doch gesagt oder?...
Du hattest vorher Tutorial und gehören sollte es nach tutorial!
-
Du weißt schon das WantedPunkte nicht WantedLevel sind oder? btw musst du die WantedPunkte auch wo hochzählen lassen.
-
Du suchst nach dem Timer der aktualisiert und fügst es halt in den Befehl direkt ein, wo er das Haus kauft / verkauft
-
Das hier
gTutorialTimer[playerid] = SetTimerEx("Tutorial", 15000, 1,"d", playerid);
muss zu
gTutorialTimer[playerid] = SetTimerEx("tutorial", 15000, 1,"d", playerid); -
Versuche es so:
if(strcmp(cmdtext, "/setlevel", true) == 0)
{
new tmp[256], idx = 1; //Da idx 0 der Befehl wäre!
if(Spieler[playerid][AdminLevel] != MAX_ADMINLEVEL){SendClientMessage(playerid, COLOR_OOC, "Ihr Adminlevel ist nicht hoch genug.");return 1;}tmp = strtok(cmdtext,idx);
if(!strlen(tmp)){SendClientMessage(playerid, COLOR_OOC,"/setlevel Spielerid Adminlevel");return 1;}
new spielerid = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)){SendClientMessage(playerid, COLOR_OOC, "/setlevel [Spielerid] [Adminlevel]");return 1;}
new adminlevel = strval(tmp);
if(!IsPlayerConnected(spielerid)){SendClientMessage(playerid, COLOR_OOC, "Dieser Spieler ist nicht Online.");return 1;}
if(adminlevel < 0 || adminlevel > 10){new str[150];format(str, sizeof(str), "Adminlevel kann nicht unter 0 oder über %d sein.", MAX_ADMINLEVEL);SendClientMessage(playerid, COLOR_OOC, str);return 1;}new str[256];
Spieler[spielerid][AdminLevel] = AdminLevel;
new Spielername[MAX_PLAYER_NAME];
GetPlayerName(spielerid , Spielername, sizeof(Spielername));
format(str,sizeof(str), "Sie haben %s's Adminlevel auf %d gesetzt.", Spielername, AdminLevel);
SendClientMessage(playerid, COLOR_OOC, str);new SpielerName2[MAX_PLAYER_NAME];
GetPlayerName(playerid, SpielerName2, sizeof(SpielerName2));
format(str,sizeof(str), "%s hat ihnen Adminlevel %d gegeben.", SpielerName2, AdminLevel);
SendClientMessage(spielerid, COLOR_OOC, str);
return 1;
} -
new Spielerdatei[64],str[256];
format(str,sizeof(str),"Du bist also %d Jahre Alt",strval(inputtext)); //Besserer ist es den String in Zahl zu konvertieren mit strval
SendClientMessage(playerid,0xFFFFFFFF,str);
dini_IntSet(Spielerdatei,"Alter",Spieler[playerid][Alter]);
//Weil du in einen Array nur einen Charakter ablagern kannst, also nütze bitte format!
//btw wieso string und nicht str? ^^
format(string, sizeof(string), inputtext);
new iValue = strval(string); //Wäre jedoch das direkte 'strval(inputtext)' nicht besser? ^^ Aber lassen wir es dabei.
Spieler[playerid][Alter] = iValue;
tutende2(playerid); -
Gut Groß-/Kleinschreibung beachten.. Wenn die public Funktion tutorial heißt, musst du die auch mit tutorial aufrufen und nicht Tutorial!
-
Wenn du ein GF hast, dann ist doch eh alles vordefiniert?..
Du zählst die Produkte der Bizzes um die Anzahl der Produkte vom Truck hoch also:
BizProdukte += TruckerProdukte; //Die Theorie
und zählst dann die TruckerProdukte auf 0 herunter..
Truckerprodukte = 0; -
Ok zeig jetzt den ganzen public Tutorial, es kann nurnoch dort der Fehler sein.
-
Ach quini... Wieso machst du nur solche blöden Fehler die so offensichtlich sind
Ich meine denk mal nach, was soll deine Zeile bedeuten?
new Schutz = (dini_FloatSet(s,"armor"));
er soll den Rückgabewert (return) von dini_FloatSet in Schutz ablagern?.. Ich dachte du willst es umgekehrt Hier ein Beispiel:
new Float:armour;
GetPlayerArmour(playerid, armour);
dini_FloatSet(s,"armor", armour);so wäre es richtig.
-
Hast du den Timer auch geändert? ... weil da nicht
"Tutorial Startet"
hingehört sondern die Integerbezeichnung"d"
... -
Die Zeile ist korrekt, es kann sein, dass oberhalb deiner { - Klammer der Fehler liegt oder du msg in einem enum mit einem anderen Datentyp definiert hast,also probiere mal statt msg die Definition strtext ^^, ansonsten weitere Codes oben posten..
new strtext[200];
...
format(strtext,sizeof(strtext),"Willkommen %s.\n\nDu kannst dich jetzt registrieren.\nGib bitte dein gewünschtes Passwort\nein.",pname); // das die zeile 105 -
So ich beurteile mal die Antworten also:
- [iP]Braiki: hmmm... Spam?
- NeoPhoenix aka ArgonX5: hmm. muss ich überhaupt von dir auch ein Kommentar ablassen ? Ich glaube nicht, da du es selber weißt
B2T:
Adde mich ICQ, dann können wir darüber reden. -
Wir sind aber ganz schön doof, aber wirklich...
Wir haben vergessen die Varbiable zu setzen
gWerbungCount[playerid] = 1;Also:
IstEingeloggt[playerid] = 0; //Wieso ist das auf 0, wenn er sich einloggt musses auf 1 ....
if(PlayerInfo[playerid][pTutorial] == 0)
{
gWerbungCount[playerid] = 1; //Das hat vergessen xD
gTutorialTimer[playerid] = SetTimerEx("Tutorial", 15000, 1,"d", playerid); //Jede Sekunde erscheint ein neuer Text!
SendClientMessage(playerid,rot,"Fehler: Du musst das Tutorial noch machen!");
} -
Nein, liest doch genauer (besonders du NeoPhoenix ^^) er meint eigentlich das Laden, also die abspeicherung der Daten in die Variablen ^^. So meinte er es und das Problem liegt an samp_mysql_strtok jedoch kenn ich mich mit mysql ned so aus
Probiers mal so:
public OnPlayerLogin(playerid, const string[])
{
new Data[1024];
new Field[64];
new query[128];
new PlayerName[24];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
new rcnt = 1;
format(query, sizeof(query), "SELECT * FROM spieler WHERE name = '%s'", PlayerName);
samp_mysql_query(query);
samp_mysql_store_result();
samp_mysql_fetch_row(Data);
print(Data);
samp_mysql_strtok(Field, "|", Data);
while (samp_mysql_strtok(Field, "|", "")==1)
{
if (rcnt == 2) PlayerInfo[playerid][pLevel] = strval(Field);
if (rcnt == 3) PlayerInfo[playerid][pEXP] = strval(Field);
if (rcnt == 4) PlayerInfo[playerid][pScheinA] = strval(Field);
if (rcnt == 5) PlayerInfo[playerid][pScheinB] = strval(Field);
if (rcnt == 6) PlayerInfo[playerid][pScheinC] = strval(Field);
rcnt++;
}
gPlayerLogged[playerid] = 1;
gPlayerAccount[playerid] = 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
samp_mysql_free_result();
return 1;
}p.S.: pöser NeoPhoenix