Du solltest auch überprüfen ob die Datei des Spielers existiert
Beiträge von IPrototypeI
-
-
Hallo alle zusammen ich frage mich gerade ob es für diese function ein limit gibt da ich
diese Function auf meinem homeserver benutzt habe und es waren nur 100 Objecte möglich auch trotz
der verwendung vom streamer plugin.Da frag ich mich gerade ob das nur wegen der leistung meines Homeservers ist oder allgemein ?
-
Hat Jemand eine Datenbank oder kann mir jemand erklären wiue ich mit xampp eine Datenbank hinzufüge?
schau dir das Tutorial an vpn maddin oder allein auf xampp dort ist alles genau beschrieben
-
sscanf(data, "p<|>iiffffii", PrivateVehicle[playerid][i][Model],Private......);
deine verwendug kann man zusammen fassen in meinem beispiel hier unten ich hab was unnötiges gemacht und zwar den ganzen spaß auch zusätzlich oben im beispiel gesplittet
was jedoch unnötig ist wie schon erwähnt geht jedoch trotzdem in meinem beispiel was ich gepostet habe ( pastbin).e<p<|>iiffffii> das e steht für enum und das p<|> ist der teiler und teilt die einzelne variabeln auf
-
Alles anzeigen
Heißt, so?
stock LoadPlayerVehicles(playerid){
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++){
if(!CarSlotInUse[playerid][i]){
new sql[128], data[128];
format(sql, sizeof(sql), "SELECT * FROM `PrivateCars` WHERE `Besitzer` = '%s'", GetName(playerid));
mysql_query(sql);
mysql_store_result();
if(mysql_num_rows() > 0){
while(mysql_fetch_row(data)){
sscanf(data, "e<p<|>iiffffii>", PrivateVehicle[playerid][i]);
}
mysql_free_result();
}
}
}
return 1;
}
?^^wenn es funktioniert das ist es gut
, was ich so nicht genau denkebenutz die
mysql_fetch_row_format für die while schleife und deine verwendung von sscanf wäre hier auch falsch
while(mysql_fetch_row_format(Query,"|"))
sscanf(data, "p<|>e<iiffffii>", PrivateVehicle[i]);du solltest auch hierzu dann die fahrzeuge erstellen lassen :D.
Ahja ich hab mal für jemanden ein kleines Script gemacht um autos zu speichern und zu laden auch mit sscanf
ich post hier mal den pastebin vllt hilft dir das ein bissle weiter. -
Hm also ich bin davon ausgegangen das die variabeln von dem vorherigen Spieler übernommen werden daher die for schleife die beim einloggen
für den eingeloggt spieler alle variabeln für den slot leert.Kannst du genau sagen wann sowas passiert oder benutzt du commands mit parameter wo du den falschen buchstabe / parameter benutzt zum beispiel für einen integer als ein wert ein string
dann würde das zusammen hängen da zum beispiel der wet 1 in ASCII 49 ist 2 50 , 3 51 und so weiter -
an was genau das liegt kann ich dir nicht sagen , jedoch habe ich eine Vermutung setzt mal wenn der Spieler sich einloggt alle werte auf 0;
Also bei OnPlayerConnect:
for(new i;i!=_:SpielerDaten;i++) SpielerInfo[playerid][SpielerDaten:i] = 0;
ich weiß nicht ob du die variabel geändert hast SpielerDaten wenn ja dann anpassen
-
und sicher das du das Rc 7 Plugin verwenden willst , weil dann verwendest du mysql_function_query und nicht nur mysql_query
dowload dir das rc 5 plugin auf der Seite dann sollte der fehler weg sein -
Kannst du bitte dein Problem genau beschreiben.
Weil ich hab das so aufgefast nach dem code das B den Convoy auflöst weil dies tust du ja bei DIALOG_CONVOY_1 ist das richtig
oder wie meinst du es , wie der Spieler B den Convoy verlässt. -
schau doch in den Showroom und such dir ein gamemode. Du könntest zum Beispiel auch ein Godfather nehmen.
In dem Godfather ist sehr viel enthalten und wenn man genau hin sieht kann man auch viel lernen.
Den Scriptstil musst du nicht übernehmen vom Godfather, aber wie du es willst learning by doing findest dort bestimmt zu sehr vielen
Informationen die du dir erarbeiten kannst. -
Alles anzeigen
Hab jetzt mal so ausprobiert.
new bool:PflanzeNaehe, ABP;
if(GetPlayerVirtualWorld(playerid) >= 1)return SendClientMessage(playerid,ROT,"Du musst draußen sein.");
if(GetPlayerInterior(playerid) != 0)return SendClientMessage(playerid,ROT,"Du musst draussen sein.");
for(; ABP<MAX_PFLANZEN; ABP++)
{
if(!IsPlayerInRangeOfPoint(playerid,5.0,abInfo[playerid][ABP][Pflanzex],abInfo[playerid][ABP][Pflanzey],abInfo[playerid][ABP][Pflanzez]))
{
PflanzeNaehe = false;
break;
}
else
{
PflanzeNaehe = true;
}
return 1;
}
if(PflanzeNaehe)return SendClientMessage(playerid,ROT,"In deiner Nähe ist bereits eine Hanfpflanze angebaut.");
if(PflanzeNaehe == false)
{
//Was dann passieren soll
}
return 1;
}Bei dem ersten klappt es, aber dort wird keine Meldung angezeigt. Wenn ich dann das zweite erstelle klappt es nemmer.
MFG
poste mal dein array abInfo
und wieso fügst du dort noch playerid ein -
du kannst ganz einfach die auswählbaren skins in ein array rein hauen
hier ein beispiel wie man das mit tasten machen könnte ein aussschnitt aus meinem tutorialsystem
new array[6] = {1,2,4,8,16,32};public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(wahl[playerid] == 1){
if(newkeys == KEY_RIGHT){
new i = test[1][playerid];
i -=1;
test[1][playerid] = i;
if(test[1][playerid] == -1){ test[1][playerid] = 5;}
SetPlayerSkin(playerid,array[test[1][playerid]]);
}
if(newkeys == KEY_FIRE){
new i = test[1][playerid];
i++;
test[1][playerid] = i;
if(6 == test[1][playerid]){ test[1][playerid] = 0; }
SetPlayerSkin(playerid,array[test[1][playerid]]);
}
if(newkeys == KEY_SECONDARY_ATTACK){
wahl[playerid] = 0;
TogglePlayerControllable(playerid,1);
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
for(new i; i<10; i++){ SendClientMessage(playerid,0xFFFFFFAA,"");}
SetCameraBehindPlayer(playerid);
}
}
return 1;
}[/pwn] -
Alles anzeigen
Kann mir bitte jemand helfen?
Ist nicht viel, aber ich blicks net!
Ist einfach ein /cc Carchat!
Das ist der Teil:
Code//AutoChat / CarChat if(strcmp(cmd,"/cc",true)==0) { if(IsSpawned[playerid] == 0) { SendClientMessage(playerid, COLOR_ERROR, "Du bist tot und somit kannst du den CarChat nicht benutzen!"); return 1; } if(!IsPlayerInAnyVehicle(playerid)) { SendClientMessage(playerid, COLOR_ERROR, "Du bist in keinem Auto, also kannst du auch nicht in den CarChat schreiben!"); return 1; } if(strlen(cmdtext) <= 4) { SendClientMessage(playerid,COLOR_ERROR,"Benutze: /cc [Nachricht]"); return 1; } new cwhisperid = GetPlayerVehicleID(playerid); new output[150]; new pname[24]; GetPlayerName(playerid, pname, 24); strmid(output,cmdtext,3,strlen(cmdtext)); format(string, sizeof(string), "(CarChat): %s(%d) %s",pname,playerid,output); printf("%s", string); for(new i=0;i<MAX_PLAYERS;i++) { if(IsPlayerInAnyVehicle(i)) { if(GetPlayerVehicleID(i) == cwhisperid) { format(string, sizeof(string), "(CarChat): %s(%d) %s",pname,playerid,output); SendClientMessage(i,COLOR_YELLOW,string); } } } return 1; }Das ist der Error:
Code(4) : error 017: undefined symbol "IsSpawned"(4) : warning 215: expression has no effect(4) : error 001: expected token: ";", but found "]"(4) : error 029: invalid expression, assumed zero(4) : fatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase4 Errors.
Tu es in deinen Ordner am PC, net am FTP oder so!
Du musst gucken, mit welchen Pawno der das öffnet und in diese Pawno Ordner tust du es in Includes, denn es kann sein, dass der ein anderes PAwno nimmt!
Und dann tust du es noch in Plugins und auch im normalen Include!
So gings bei mir
danke aber:
Zeile 19:
error 017: undefined symbol "max_players"das ist bei ihm auch Falsch geschrieben MAX_PLAYERS muss das heißen
-
Ok wenn GetPlayerCameraPos auch die Position wiedergibt, auch wenn nichts über SetPlayerCameraPos versetzt worden ist, dann würde ich den Vorschlag von meinem Vorposter verwenden
(ersparst dir halt wenige leichte Berechnungen).Templer zum thema
GetPlayerCameraFrontVector das zeigt dir so gesehen nur die richtung an nicht genau die x ,y ,z koordinaten an wo sich der vektor befindet
nur die ausrichtung vom kopf so gesehn und GetPlayerCameraPos gibt dir die position aus wo sich die Kamera position befindet. -
Klappt immer noch nicht.
zeig mal dein array wie du das verwendest
abInfo[playerid][ABP][Pflanzex]und was genau geht nicht was wird ausgeben ?
-
Sollte mit GetPlayerCameraPos gehen wenn du noch den genauen punkt haben willst wo er hin schaut also der vektor kannst das auch noch verwenden
GetPlayerCameraFrontVectorhttp://wiki.sa-mp.com/wiki/GetPlayerCameraPos
http://wiki.sa-mp.com/wiki/GetPlayerCameraFrontVector<woltlab-metacode-marker data-name="code" data-uuid="b5a3f3f8-444b-4666-bb72-c4dbb8a8d5b2" data-source="W2NvZGU9cGhwXQ==" data-attributes="WyJwaHAiXQ==" /><woltlab-metacode-marker data-uuid="b5a3f3f8-444b-4666-bb72-c4dbb8a8d5b2" data-source="Wy9jb2RlXQ==" /> -
Du deinem problem hast du überhaupt
IsSpawneddefiniert? Nein dann tu das mal
new IsSpawned[MAX_PLAYERS]
-
Und jetzt nochmal so, dass ich es verstehe?

Also. Wenn du die Autos vom Script aus erstellen lässt in OnGameModeInit
new i;
for(; i<MAX_VEHICLES; i++) {
valueOne[i]=0;
}sollte der bug wenn du diesen code dort einfügst nicht mehr für diese Fahrzeuge existieren.
Wenn du das Auto welches du erstellt hast über ein command sofort respawnst oder zerstörst
und du hast den code valueOne[vehicleid]=0;
bei OnVehicleSpawn drinne sollte der bug für das auto auch beseitigt sein. Denk ich jetzt.Das kannst du ja mal testen wenn es so ist dann hast du die möglichkeit , wenn du ein fahrzeug erstellst
diese variabel für das Auto sofort auf 0 zu setzen. -
if(GetPlayerVirtualWorld(playerid) >= 1)return SendClientMessage(playerid,ROT,"Du musst draußen sein."); { if(GetPlayerInterior(playerid) != 0)return SendClientMessage(playerid,ROT,"Du musst draussen sein."); { for(new ABP = 0; ABP
hier test es mal so
new bool:ja, ABP;
if(GetPlayerVirtualWorld(playerid) >= 1)return SendClientMessage(playerid,ROT,"Du musst draußen sein.");
if(GetPlayerInterior(playerid) != 0)return SendClientMessage(playerid,ROT,"Du musst draussen sein.");
for(; ABP<MAX_PFLANZEN; ABP++){
if(!IsPlayerInRangeOfPoint(playerid,5.0,abInfo[playerid][ABP][Pflanzex],abInfo[playerid][ABP][Pflanzey],abInfo[playerid][ABP][Pflanzez])){
SendClientMessage(playerid,ROT,"Da kannst du bauen");
ja = false;
break;
}else{ ja= true;}
}
if(ja)return SendClientMessage(playerid,ROT,"In deiner Nähe ist bereits eine Hanfpflanze angebaut.");
return 1;
//edit code eingerückt
nee das break stimmt -
Funktioniert nicht.
Sonst noch jemand eine Idee?
xD ok hab nur gedacht das du nur nix haben willst an dem punkt wo du willst
new bool:ja;
for(new ABP = 0; ABP<MAX_POINT; ABP++){
if(IsPlayerInRangeOfPoint(playerid,10,abInfo[playerid][ABP][Px],abInfo[playerid][ABP][Py],abInfo[playerid][ABP][Pz])){
ja = true;
break;
}
else{ //deine Function
}
return 1;
}
if(ja) return SendClientMessage(playerid, cRed, "In deiner Nähe ist bereits ein Punkt");