sscanf gibe es bereits im script such mal nach den stock sscanf und lösch den raus
Beiträge von Beavis
-
-
while(mysql_fetch_row(str))//Übergibt das was vorher aus der Tabelle geladen wurde an einen string. { sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]);//teilt den string in seine bestandteile so wie wir es wollen und gibt es an das enum weiter }
maddin änder das doch mal bei gelegenheit
die while funktion würd ich nicht anwenden, da bei mir gerne der Server verreckt wenn ich das mit ner while funktion mache^^So geht es auch:
mysql_fetch_row(str);
sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]); -
Mal was zum lachen^^
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt. -
Hat einer von euch eine Idee wie ich den Timer etwas schonender machen kann?
Wenn kein User auf den Server ist brauch der zwischen 10 und 20 Millisekunden und das ist mir etwas zu hoch
Ich habe schon einiges geändert aber die Zeit will nicht runtergehen
Spoiler anzeigen DT_Public OnSecond()
{
new minute,sec,hour,query[128], Kosten[2];
gettime(hour,minute,sec);
new t1 = GetTickCount();
if(minute%15==0&&sec==0)
{
Wetter[0] = WetterRandomLS[random(sizeof(WetterRandomLS))];
Wetter[1] = WetterRandomSF[random(sizeof(WetterRandomSF))];
Wetter[2] = WetterRandomLV[random(sizeof(WetterRandomLV))];
for(new i; i < MAX_PLAYERS; i++){
if(!IsPlayerConnected(i))continue;
SetPlayerWetter(i);}
if(Werbung==0)
{
SendClientMessageToAll(cGrey,"====================[Dark-Trigardon]====================");
SendClientMessageToAll(cWhite,"Schon gewusst?");
SendClientMessageToAll(cWhite,"Bei uns gibt es die DT-Sterne.");
SendClientMessageToAll(cWhite,"Mit diesen Sternen, kannst du dir einige schöne Dinge holen.");
SendClientMessageToAll(cWhite,"Gebe dafür /shop ein.");
SendClientMessageToAll(cGrey,"====================["ForenURL"]====================");
Werbung=1;
}
else if(Werbung==1)
{
SendClientMessageToAll(cGrey,"====================[Dark-Trigardon]====================");
SendClientMessageToAll(cWhite,"Du hast nichts zu tun?");
SendClientMessageToAll(cWhite,"Dann such dir einen Job.");
SendClientMessageToAll(cWhite,"Es gibt verschiedene Jobs, die einen Spaß machen können");
SendClientMessageToAll(cWhite,"und mit den man schnelles Geld machen kann.");
SendClientMessageToAll(cWhite,"Jobs findest du in unseren Arbeitsamt.");
SendClientMessageToAll(cGrey,"====================["ForenURL"]====================");
Werbung=2;
}
else if(Werbung==2)
{
SendClientMessageToAll(cGrey,"====================[Dark-Trigardon]====================");
SendClientMessageToAll(cWhite,"Schon gewusst?");
SendClientMessageToAll(cWhite,"Um Gebäude zu betreten,");
SendClientMessageToAll(cWhite,"musst du nicht immer Commands eingeben.");
SendClientMessageToAll(cWhite,"Drücke einfach die Enter Taste.");
SendClientMessageToAll(cGrey,"====================["ForenURL"]====================");
Werbung=0;
}
}
if(minute == 0 && sec == 0)
{
for(new i = 0; i < MAX_HAUS; i++)
{
if(strcmp(Haus[i][HOwner],"Niemand",true))
{
if(Biz[WasserBiz][bProds]>4)
{
Kosten[0] = Biz[WasserBiz][bProdpreis]*5;
if(Haus[i][HKasse] > Kosten[0])
{
Biz[WasserBiz][bProds] -= 5;
Biz[WasserBiz][bKasse] += Kosten[0];
Haus[i][HKasse] -= Kosten[0];
UpdateHaus(i);
UpdateBiz(WasserBiz);
}
}
else
{
SendClientMessageToAll(cYellow,">> Das Wasserwerk benötigt dringed Waren!");
SendClientMessageToAll(cYellow,">> Es steht ein Wassermangel bevor!");
}
if(Biz[StromBiz][bProds]>4)
{
Kosten[1] = Biz[StromBiz][bProdpreis]*5;
if(Haus[i][HKasse] > Kosten[1])
{
Biz[StromBiz][bProds] -= 5;
Biz[StromBiz][bKasse] += Kosten[1];
Haus[i][HKasse] -= Kosten[1];
UpdateHaus(i);
UpdateBiz(StromBiz);
}
}
else
{
SendClientMessageToAll(cYellow,">> Das Stromwerk benötigt dringed Waren!");
SendClientMessageToAll(cYellow,">> Es steht ein Stromausfall bevor!");
}
}
}
SaveGame();
}
if(hour > 7 && hour < 23)
{
if(minute==0&&sec==0)
{
Server[ServerLotto]+=random(5000);
format(query,128,">> In 3 Minuten beginnt das Lottospiel! Es sind %d$ im Jackpot!",Server[ServerLotto]);
SendClientMessageToAll(cGrey,query);
format(query,128,">> Nutze /lotto [1-%d] um mitzumachen",MAX_PLAYERS);
SendClientMessageToAll(cGrey,query);
}
else if(minute==1&&sec==0)
{
format(query,128,">> In 2 Minuten beginnt das Lottospiel! Es sind %d$ im Jackpot!",Server[ServerLotto]);
SendClientMessageToAll(cGrey,query);
format(query,128,">> Nutze /lotto [1-%d] um mitzumachen",MAX_PLAYERS);
SendClientMessageToAll(cGrey,query);
}
else if(minute==2&&sec==0)
{
format(query,128,">> In 1 Minute beginnt das Lottospiel! Es sind %d$ im Jackpot!",Server[ServerLotto]);
SendClientMessageToAll(cGrey,query);
format(query,128,">> Nutze /lotto [1-%d] um mitzumachen",MAX_PLAYERS);
SendClientMessageToAll(cGrey,query);
}
else if(minute==3&&sec==0)
{
new Number = 1+random(MAX_PLAYERS);
format(query,128,">> Die heutige Zahl im Lottospiel lautet %d!",Number);
SendClientMessageToAll(cGrey,query);
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[i][Logged]==0) continue;
if(Number==PlayerInfo[i][Lotto])
{
format(query,128,">> %s hat den Jackpot geknackt und bekam %d$!",PlayerInfo[i][Name],Server[ServerLotto]);
SendClientMessageToAll(cGrey,query);
Server[ServerKasse]-=Server[ServerLotto];
GivePlayerMoney(i,Server[ServerLotto]);
Server[ServerLotto]=0;
Server[ServerLotto]+=random(5000);
}
PlayerInfo[i][Lotto]=0;
}
}
}
switch(TimeUhr)
{
case 0:{format(query,20,"%02d %02d",hour,minute),TimeUhr=0;}
case 1:{format(query,20,"%02d:%02d",hour,minute),TimeUhr=1;}
}
TextDrawSetString(Clock,query);
TextDrawShowForAll(Clock);
SetWorldTime(hour);
for(new i; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[i][Logged]==1)
{
if(GetPlayerMoney(i) > PlayerInfo[i][Geld])
{
SetPlayerMoney(i,PlayerInfo[i][Geld]);
}
if(GetTickCount()-PlayerInfo[i][AFK] > 1999)
{
format(query,sizeof query,"AFK seit %d Sekunden",((GetTickCount()-PlayerInfo[i][AFK])/1000));
SetPlayerChatBubble(i,query,cRed,15.0,1500);
continue;
}
else
{
if(PlayerInfo[i][PayDay]!=0)
PlayerInfo[i][PayDay]--;
else if(PlayerInfo[i][PayDay]==0)
PlayerPayDay(i);
if(PlayerInfo[i][Jailtime] > 0)
PlayerInfo[i][Jailtime]--;
else if(PlayerInfo[i][Jailtime]==0)
PlayerInfo[i][Jailtime]=-2,SpawnPlayer(i);
if(PlayerInfo[i][FuckBlitzer]> 0)
PlayerInfo[i][FuckBlitzer]--;
else if(PlayerInfo[i][FuckBlitzer]==0)
PlayerInfo[i][FuckBlitzer] = -1;
if(PlayerInfo[i][Gemutet]!=0)
PlayerInfo[i][Gemutet]--;
else if(PlayerInfo[i][Gemutet]==0)
PlayerInfo[i][Gemutet]=0;
if(IsUserInFillStation(i))
GameTextForPlayer(i,"Willkommen an der~n~Tankstelle~n~/tanken",1200,6);
if(GetNearATM(i))
GameTextForPlayer(i,"~y~Willkommen am ATM~n~~w~Druecke Enter",1200,6);
UpdateAdminTicket(i);
if(PlayerInfo[i][MedicTot]>0)
{
PlayerInfo[i][MedicTot]--;
if(PlayerInfo[i][MedicTot]<11)
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
format(query,128,"~w~Noch ~r~%d ~w~Sekunden",PlayerInfo[i][MedicTot]);
GameTextForPlayer(i,query,1200,6);
ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 1000*60*3);
format(query,128,"Überlebt noch %d Sekunden",PlayerInfo[i][MedicTot]);
SetPlayerChatBubble(i, query, cGrey, 10.0, 1500);
}
else if(PlayerInfo[i][MedicTot]==0)
{
PlayerInfo[i][MedicTot]=-1;
if(PlayerInfo[i][Mediccall]!=0)
{
PlayerInfo[i][Tot]=1;
PlayerInfo[i][Mediccall]=0;
DestroyPickup(PlayerInfo[i][TotPickup]);
PlayerInfo[i][TotPickup]=-1;
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
format(query,128,">> %s ist an seinen Verletzungen verstorben!",PlayerInfo[i][Name]);
SendTeamMessage(tMedic,query);
GameTextForPlayer(i,"Du bist an deinen Verletzungen gestorben",1200,6);
SpawnPlayer(i);
}
else
{
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
PlayerInfo[i][Tot]=3;
SpawnPlayer(i);
}
}
format(query,100,"~g~%d ] "ForenURL"",PlayerInfo[i][Star]);
TextDrawSetString(PlayerInfo[i][StarInfo],query);
TextDrawShowForPlayer(i,PlayerInfo[i][StarInfo]);
//FuckBlitzer
for(new Blitz=0; Blitz<sizeof(ServerBlitzer); Blitz++)
{
if(IsPlayerInRangeOfPoint(i, 40.0, ServerBlitzer[Blitz][SBx], ServerBlitzer[Blitz][SBy], ServerBlitzer[Blitz][SBz]))
{
if(GetPlayerState(i)==PLAYER_STATE_DRIVER)
{
new speed = sm_GetVehicleSpeed(GetPlayerVehicleID(i));
if(speed > ServerBlitzer[Blitz][SBSpeed])
{
if(PlayerInfo[i][FuckBlitzer] == -1)
{
PlayerInfo[i][FuckBlitzer] = 10;
new strafe = (speed*3)-ServerBlitzer[Blitz][SBSpeed];
PlayerPlaySound(i, 1132, 0.0, 0.0, 0.0);
GivePlayerMoney(i, -strafe);
Server[ServerKasse]+=strafe;
format(query,sizeof(query), "[BLITZER] Du bist %d km/h zu schnell gefahren!", speed - ServerBlitzer[Blitz][SBSpeed]);
SendClientMessage(i, cYellow, query);
format(query,sizeof(query), "[BLITZER] Erlaubte Geschwindigkeit: %d km/h. Du musst %d$ Strafe bezahlen.", ServerBlitzer[Blitz][SBSpeed], strafe);
SendClientMessage(i, cYellow, query);
TextDrawShowForPlayer(i,PlayerInfo[i][LadeACC][0]);
SetTimerEx("HideBlitzer",1000,0,"d",i);
}
}
}
}
}
if(GetPlayerState(i)==PLAYER_STATE_SPECTATING)
{
new Float:OpferHealth, Float:OpferVehHealth;
GetPlayerHealth(PlayerInfo[i][Opfer],OpferHealth);
GetVehicleHealth(GetPlayerVehicleID(PlayerInfo[i][Opfer]),OpferVehHealth);
new sh=floatround(OpferHealth,floatround_round);
new vh=floatround(OpferVehHealth,floatround_round);
format(query,sizeof(query),"~n~~n~~n~~n~~n~~n~~n~~r~HP: %d~n~~r~Vehicle-HP: %d~n~~r~",sh,vh);
GameTextForPlayer(i,query,1500,4);
}
new weg = sm_GetVehicleSpeed(GetPlayerVehicleID(i)),tachostring[128];
if(GetPlayerState(i)==PLAYER_STATE_DRIVER)
{
new vid=GetPlayerVehicleID(i);
format(tachostring,sizeof tachostring,"Tank: %d/%d~n~~w~~n~Km: %.2f",Car[vid][Tank]/10,((Car[vid][Tank]/10 > 100)?(1000):(100)),((Car[vid][Kilometers] > 0)?(Car[vid][Kilometers]):(0.0)));
TextDrawSetString(PlayerInfo[i][Tacho][1],tachostring);
if(Car[vid][Kilometers] > 0)Car[vid][Kilometers]+=floatdiv(float(weg),3600);
format(tachostring,sizeof tachostring,"%d Km/h",weg);
TextDrawSetString(PlayerInfo[i][Tacho][0],tachostring);
TextDrawShowForPlayer(i,PlayerInfo[i][Tacho][0]);
TextDrawShowForPlayer(i,PlayerInfo[i][Tacho][1]);
if(weg > 350)
{
format(query, sizeof(query), "%d kmh (%s)",weg,CarName[GetVehicleModel(vid)-400]);
CartmanMelder(i,query,"~y~");
shit_Cartman(i,"Speedhack");
}
//Motorzeug etc
new Float:vHP,Float:x,Float:y,Float:z,Float:a,engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleHealth(vid,vHP);
if(vHP >= 300.0) continue;
if(vHP <= 250.0)
{
SetVehicleHealth(vid,260.0);
GetVehiclePos(vid,x,y,z);
GetVehicleZAngle(vid,a);
SetVehiclePos(vid,x,y,z);
SetVehicleZAngle(vid,a);
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
if(Car[vid][PuttPutt]==0)
{
Car[vid][Motor]=0;
Car[vid][PuttPutt]=1;
SendDriverMessage(vid,"[Motorschaden] Um einen Mechaniker zu rufen gebe /mechaniker ein");
if(IsVehicleAFraktionsCar(vid)!=0)
{
format(query, sizeof(query),"[Fraktions-Info] Das Fahrzeug mit den Kennzeichen %s hat einen Totalschaden", Car[vid][Numplate]);
SendTeamMessage(IsVehicleAFraktionsCar(vid),query);
}
if(CheckUserFromTeam(tFeuer) >= 2)
{
for(new pID; pID < MAX_PLAYERS; pID++)
{
if(!IsPlayerConnected(pID)) continue;
if(GetPlayerVehicleID(pID) == vid)
{
TogglePlayerControllable(pID, 0);
SendClientMessage(pID, cRed, "Durch den Unfall bist du eingeklemmt! Rufe mit /feuerwehr die Feuerwehr");
SendClientMessage(pID, cRed, "--- Bitte einigt euch, wer von euch die Feuerwehr ruft! (wenn mehrere in einem Auto sitzen!) ---");
SetPlayerHealth(pID, 1);
}
}
}
}
}
}
else
{
TextDrawHideForPlayer(i,PlayerInfo[i][Tacho][0]);
TextDrawHideForPlayer(i,PlayerInfo[i][Tacho][1]);
}
}
}
}
for(new i = 0; i < sizeof(Geschenk); i++)
{
if(Geschenk[i][G_Erstellt]==0) continue;
if(Geschenk[i][G_Erstellt]==1)
{
if(Geschenk[i][G_Timeout]!=0)Geschenk[i][G_Timeout]--;
else if(Geschenk[i][G_Timeout]==0)Geschenk[i][G_Timeout]=0;
}
}
for(new vid; vid < MAX_VEHICLES; vid++)
{
new engine,lights,alarm,doors,bonnet,boot,objective;
if(IsAFly(vid) || IsAHeli(vid) || IsABoot(vid)) continue;
if(Car[vid][Motor]!=1) continue;
if(Car[vid][Motor]==1)
{
switch(Car[vid][Tank])
{
case 0:
{
GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
Car[vid][Motor]=0;
Car[vid][Tank]=0;
SendDriverMessage(vid,"[Tank leer] Um einen Mechaniker zu rufen gebe /mechaniker ein");
if(IsVehicleAFraktionsCar(vid)!=0)
{
format(query,128,"[Fraktions-Info] Der Tank von den Wagen mit dem Kennzeichen %s ist leer",Car[vid][Numplate]);
SendTeamMessage(IsVehicleAFraktionsCar(vid),query);
}
}
default:
{
Car[vid][Tank]--;
}
}
}
}
new t2 = GetTickCount();
printf("%d ms",t2-t1);
return 1;
} -
Alles anzeigen
WARUM???? Nur mal so als kleiner Tipp. Dini ist perfekt zur Accountspeicherung geeignet.
Allerdings solltest du dies erst benutzen um den Spieler beim ausloggen zu speichern, und ebend beim einloggen laden zu lassen.Im Script selbst also während der Spieler online ist solltest du enum´s nehmen, da dies viel schneller ist als eine Datei umzuschreiben.
Sprich erstell dir nen enum:
enum Spieler
{
JobID
anderes zeugs das du speichern willst wie
LvL
Geld
};in deinem Job befehl bennenst du die Variable
Spieler[playerid][JobID] = 1;für dein Textdraw machst du nen Switch
switch(Spieler[playerid][JobID])
{
Case 1: {jobstring="DEIN ERSTER JOB"; }
Case 2: {jobstring="DEIN ZWEITER JOB"; }Beim ausloggen speicherst du das dann...
Dir ist bewusst das deine Codes kein Bisschen Funktionieren? -
Ich würde es so machen
#define Leader(%0,%1) PlayerInfo[%0][pLeader] == %1
#define Member(%0,%1) PlayerInfo[%0][pMember] == %1Eine abfrage währe dann diese:
if(Leader(playerid,TeamID))return print("Is er");
if(Member(playerid,TeamID))return print("Is er"); -
in wirklichkeit wird er aber nur 5x"Stimmt nicht" ausgeben
Hast recht ich sag nichts
Laut meinen Testerein ist das richtig
if(time > 19 || time < 6)so hab ich es getestet:
stock Hund(time)
{
if(time > 19 || time < 6)return printf("%d Ok",time);
return printf("%d fehler",time);
}public OnGameModeInit()(time)
{
for(new i;i<24;i++)
{
Hund(i);
}
ergebnis:
Code[02:42:12] 0 Ok[02:42:12] 1 Ok[02:42:12] 2 Ok[02:42:12] 3 Ok[02:42:12] 4 Ok[02:42:12] 5 Ok[02:42:12] 6 fehler[02:42:12] 7 fehler[02:42:12] 8 fehler[02:42:12] 9 fehler[02:42:12] 10 fehler[02:42:12] 11 fehler[02:42:12] 12 fehler[02:42:12] 13 fehler[02:42:12] 14 fehler[02:42:12] 15 fehler[02:42:12] 16 fehler[02:42:12] 17 fehler[02:42:12] 18 fehler[02:42:12] 19 fehler[02:42:12] 20 Ok[02:42:12] 21 Ok[02:42:12] 22 Ok[02:42:12] 23 Ok -
Gibt es eine möglichkeit, alle Skins via AddPlayerClass wiederzugeben (Beim Spawn zum Auswwählen) ohne alle Skins einzeln einzufügen?
MfG
ne schleife -
die include muss die endung auch mit .inc haben..
schau mal nach ob das alles stimmt wenn der fehler noch da ist -
dann kommt immernochkein Grundlad dir das runter, includier die Include compile dein Script und es geht
-
Den kick per Timer machen seit 0.3x kommt da kein Grund mehr
-
Könnt ihr nicht lesen?
Er muss das Libmysql Inastallieren mehr nicht
Da bringt auch kein 0.3x oder eine neuinstallation -
Naja.... nützlich ist es und es ist ein Code :DD
Wo bitte?
Bei OnGameModeInit sind sowiso die playervariablen auf 0
Daher ist dein Code purer schrott -
Statt eine pickup id einfach eine Objektid nutzen
-
Garkeinen von beiden
Dieser YouTube Müll, ist eh für die Tonne
Nutzt Wiki und daraus lernt man mehr -
Ich denke, das wir weiterhin noch Redaktoren suchen und möchte wieder auf unseren Forum aufmerkasm machen,
da in letzer zeit ziemliche ruhe eingekehrt ist^^ -
aber auch schwerer zu lernen
Schwer ist es nicht am anfang hängt man zwar etwas fest aber das geht schnell weg
aber auch auf Youtube
Das vergess mal gabz schnell, denn YouTube Tutorials sind der größte Müll
und sollte ich das ganze Script MySQL machen?
Wenn MySQl dann würd ich alles machen
Hab ich auch bei mir wird nichts in einer textdatei geschrieben etc.Bei MySQl ist es vorteilhaft, da man es sogesehen fast überall mit intregieren kann und da es deutlich schneller ist als z.B. dini
-
nutz die strcat funktion die ist dafür am besten geeignet
-
das hier
new MySQL:SQL;//Global
SQL = mysql_init(LOG_ONLY_ERRORS, 1);
mysql_connect(HostIP,HostUser,HostPasswort,HostDatabase,SQL,1);@Pocket das Strickenkid plugin ist dafür besser man muss es nur richtig anwenden
-
dir fehlt wol das mysql_init