ich weiß es ist bissle mehr als du ausgeben möchtest und eine andere Zahlungsart
Aber Falls du Interesse hast
https://breadfish.de/index.php…nd-burning-board-4-style/
Beiträge von IPrototypeI
-
-
Die Idee ist gut von dem System, aber mit der Musik im Video habt ihr richtig reingekackt, das passt wirklich 0 dazu.
-
ich würde mich anbieten falls du noch nix gefunden hast und die Bezahlungart Paypal oder Banküberweisung wäre
-
Für kleinere Sachen bietet sich cheatengine auf jeden Fall an, die Adresse für sich wechselnde Werte können durch die Suchfunktion schnell gefunden werden.
-
Du möchtest bestimmt die Elemente , welche vom text bedeckt sind auch haben ?
Oder würde dir sowas (grob) reichen ?
-
Hallo Jeffry, wenn du bei der Nutzung von sscanf nix angibst gibt sscanf 1 zurück und gibt daher die Meldung aus das der Nefehl ein bestimmtes Format braucht daher ist die länge abzuprüfen vom Grund nicht notwendig
-
Entweder du erstellst dir eine variable in der du die playerid des NPC speicherst, um den NPC zu ermitteln kannst du den Namen unter OnPlayerConnect und ob er ein NPC ist abprüfen und die Variable setzen.
Oder du schreibst dir eine Funktion
GetPlayerIDByName(npcname[]) aber diese findest du auch im Codeschipselbereich.
Um die ID des NPC zu ermitteln -
Es könnte daran liegen das er die ID nicht richtig umwandelt von dem Spieler, von dem du das Ticket annimmst und du dadurch auf einen negativen Index zugreifst oder der Fehler liegt in dieser Funktion ShowTicketSystem();
Du kannst du das crashdetect plugin mal downloaden https://github.com/Zeex/samp-plugin-crashdetect/release
danach erstellst du in dem pawno ordner eine datei mit dem namen pawn.cfg und dort schreibst du -d3 rein dann sollte dir die entsprechende Zeile angezeigt werden, wo dein Skript genau crasht.
-
YaBroo:
Bullshit. Ohne die Größe des Strings anzugeben funktioniert das ganze nichtWenn man den Funktion sscanf verwendet muss man die länge nicht angeben hier droht jedoch die gefahr von string buffer overflows.
http://wiki.sa-mp.com/wiki/Sscanf_code
@YaBrooWenn du das Plugin nutzst musst du dir auch sicher sein das die FUnktion sscanf aus dem skript entfernt wurde da gibt es keine komplikationen
die neuste Version von sscanf findest du hier
http://forum.sa-mp.com/showthread.php?t=570927Code
Alles anzeigenocmd:healall(playerid,params[]) { new string[128],Grund[128]; if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!"); if(sscanf(params,"s[128]",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /healall [Grund]"); format(string,sizeof(string),"Alle Spieler wurden von %s gehealt, Grund: %s",GetName(playerid),Grund); SendClientMessageToAll(BLAU,string); for(new i; i < MAX_PLAYERS; i ++){ if(IsPlayerConnected(i) && !IsPlayerNPC(i) && playerid != i) SetPlayerHealth(i,100); } return 1; } ocmd:armourall(playerid,params[]) //Fixxen { new string[128],Grund[128]; if(sInfo[playerid][alevel] < 3)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!"); if(sscanf(params,"s[128]",Grund))return SendClientMessage(playerid,GRAU,"Verwendung: /armourall [Grund]"); format(string,sizeof(string),"Alle Spieler haben von %s Armour erhalten, Grund: %s",GetName(playerid),Grund); SendClientMessageToAll(BLAU,string); for(new i; i < MAX_PLAYERS; i ++){ if(IsPlayerConnected(i) && !IsPlayerNPC(i) && playerid != i) SetPlayerArmour(i,100); } return 1; }
-
Code
Alles anzeigenocmd:mute(playerid,params[]) { new pID; new string[528]; new grund[64]; if(sInfo[playerid][alevel] < 2)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!"); if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]"); if(IsPlayerConnected(pID)) return SendClientMessage(playeerid,ROT,"Der Spieler ist nicht online"); if(sInfo[playerid][alevel] < sInfo[pID][alevel]) return SendClientMessage(playerid,ORANGE,"Du kannst keinen Admin muten, der einen höheren Rang als du besitzt!"); format(string,sizeof(string),"%s wurde von %s gemutet! Grund: %s",GetName(playerid),GetName(pID),grund); for(new i=0; i<MAX_PLAYERS; i++) if(sInfo[i][alevel] > 0) SendClientMessage(i,ROT,string); sInfo[pID][mute] = 1; savePlayer(pID); return 1; }
So sollte der Befehl passen, speicherst und lädst du den auch den Wert von Mute, wenn ja und es sollte immer noch nicht funktionieren,
dann lass dir beim laden der Spielerdaten zum schluss den Wert von mute ausgebenprintf("Mute- Wert %d", sInfo[playerid][mute]);
//edit
Das ist zwar offtopic, jedoch Leute, welche unter OnPlayerUpdate die Spielerdaten andauernt speichern die haben keine Ahnung vom Skripten geschweige von Performance, ich glaube schlimmer kann man sein Skript nicht vergewaltigen.
-
Kannst du bitte mal mysql_function_query, mysql_pquery, mysql_tquery posten mit dem du die Daten ausliest, also hier ist kein Fehler zu erkennen
aber sind die Daten auch in der Datenbank enthalten ?Ein kleiner Tipp du braucht keine so riesige Strings da reiche 20 Zeichen und ein String kannst du auch mehrmals nutzen.
Bedeutet format überschreibt den gesamten StringCodefor(new i; i<13; i++) { new wString[20]; format(wString,sizeof(wString),"waffe%d",i); pWaffenID[i] = cache_get_field_content_int(i,wString,dbhandle); format(wString,sizeof(wString),"munition%d",i); pAmmu[i] = cache_get_field_content_int(i,wString,dbhandle); GivePlayerWeapon(playerid,pWaffenID[i],pAmmu[i]); }
-
Mal eine Frage, warum sagst Du, dass Du 4 Jahre PHP-Erfahrungen hast, aber nicht mal ein paar SQL-Abfragen mit PHP hinbekommst?
(Suche jemanden, der mir hilft eine kleine SQL Prozedur zu erstellen)Ich will jetzt gar nicht wissen, inwiefern bei den anderen "Erfahrungen" geflunkert wurde...
Er schreibt doch nur rein das er 4 Jahre PHP-Erfahrung hat , dass muss nicht bedeuten das er darin gut ist was er auch nirgends schreibt.
Du schreibst auch das du fortgeschrittene Java Kenntnisse besitztst und suchst dir trotzdem jemand der eine Android App für dich programmiert.
Daher calm down.
-
Ich würde eher die Z - Rotation nutzen und du hast due Koordinate Kamera[i][k_Y] genutzt
SetPlayerCameraLookAtEx(playerid, Kamera[i][k_X], Kamera[i][k_Y], Kamera[i][k_Z], -Kamera[i][k_RotX], Kamera[i][k_RotZ]-90);
-
Schau doch ins wiki
Das native sieht so aus und jetzt vergleichst du deine Parameter (vehicleid,0,0) mit die der Funktion (vehicleid, playerid, objective, doorslocked)
siehe dazu auch den wiki eintrag -
Das Problem bei Objekten ist das ihre Rotation anders ausgerichtet ist ich hab das ganze nochmal probiert und hab dir den Code mit dem ich das kurz getestet habe geschrieben
Code
Alles anzeigennew Float:Rot[2], obj, done; CMD->test(playerid,params[]){ SetPlayerCameraLookAtEx(playerid,20.0,20.0,10.0,-Rot[0],Rot[1] - 90); return 1; } CMD->back(playerid,params[]){ SetCameraBehindPlayer(playerid); return 1; } CMD->set(playerid,params[]){ if(!done)done = 1; else done = 0; return 1; } public OnPlayerUpdate(playerid) { if(!done)return 1; new Keys,ud,lr; GetPlayerKeys(playerid,Keys,ud,lr); if(ud == KEY_UP) { Rot[0] += 5.0; } else if(ud == KEY_DOWN){ Rot[0] -= 5.0; } if(lr == KEY_LEFT){ Rot[1] += 5.0; } else if(lr == KEY_RIGHT){ Rot[1] -= 5.0; } SetObjectRot(obj,Rot[0], 0.0,Rot[1]); SetPlayerCameraLookAtEx(playerid,20.0,20.0,10.0,-Rot[0],Rot[1] - 90); return 1; } stock SetPlayerCameraLookAtEx(playerid, Float:X, Float:Y, Float:Z, Float:RotX, Float:RotY) { SetPlayerCameraPos(playerid, X, Y, Z); X += 10.0 * floatcos(RotX, degrees) * floatcos(RotY, degrees); Y += 10.0 * floatcos(RotX, degrees) * floatsin(RotY, degrees); Z += 10.0 * floatsin(RotX, degrees); SetPlayerCameraLookAt(playerid, X, Y, Z); return 1; } public OnGameModeInit() { obj = CreateObject(1886,20.0,20.0,10.0,0.0,0.0,0.0); // Don't use these lines if it's a filterscript SetGameModeText("Blank Script"); AddPlayerClass(0, 20.0,20.0,5.0, 269.1425, 0, 0, 0, 0, 0, 0); return 1; }
-
Die Funktion ist nicht fehlerhaft den sie berechnet den SetPlayerCameraLookAt ausgehend von der Rotation in einer Distanz von 10 Units , ich habe die Funktion davor selbst getestet und sie funktioniert wie sie soll
-
Dürfte ich dich Fragen wie du meinen Codeschnipsel verwendest und kannst du den Code dazu posten ?
-
lässt sich von selbst erklären
Also dein Code hat noch optimierungs potenzialCodestock ConvertIntToString(val, string[]){ valstr(string, val); for(new i = strlen(string)-1; i >= 3;) { i-= 2; strins(string, ".", i--, 1); } return 1; }
Dein #undef DECIMAL_SYMBOL kannst du dir sparen, das würdest du nur brauchen falls du dasselbe Define nur mit einem anderen Inhalt nochmal im Code verwenden würdest
//edit
Paar nützliche Funktionen//edit neue Funktion
Mit dieser Position kann man durch Winkel die Kamera via SetPlayerCameraPos setzenCodestock SetPlayerCameraLookAtEx(playerid, Float:X, Float:Y, Float:Z, Float:RotX, Float:RotZ) { SetPlayerCameraPos(playerid, X, Y, Z); X += 10.0 * floatcos(RotX, degrees) * floatcos(RotZ, degrees); Y += 10.0 * floatcos(RotX, degrees) * floatsin(RotZ, degrees); Z += 10.0 * floatsin(RotX, degrees); SetPlayerCameraLookAt(playerid, X, Y, Z); return 1; }
Code
Alles anzeigenstock GetAttachDynamicObjectOffset(objectID, &Float:offsetx, &Float:offsety, &Float:offsetz, &Float:rx, &Float:ry, &Float:rz) { if(!IsValidDynamicObject(objectID))return 0; Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_OFFSET_X,offsetx); Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_OFFSET_Y,offsety); Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_OFFSET_Z,offsetz); Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_R_X,rx); Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_R_Y,ry); Streamer_GetFloatData(STREAMER_TYPE_OBJECT, objectID, E_STREAMER_ATTACH_R_Z,rz); return 1; } stock GetAttachDynamicObjectPos(objectID, vehicleid, &Float:x, &Float:y, &Float:z, &Float:rx, &Float:ry, &Float:rz) { if(!IsValidDynamicObject(objectID))return 0; new Float:vX, Float:vY, Float:vZ, Float:vRot; GetVehiclePos(vehicleid,vX,vY,vZ); GetVehicleZAngle(vehicleid,vRot); GetAttachDynamicObjectOffset(objectID, x, y, z, rx, ry, rz); vX = (floatsin(360-vRot,degrees) * y + floatcos(360-vRot,degrees) * x) + vX; vY = (floatcos(360-vRot,degrees) * y - floatsin(360-vRot,degrees) * x) + vY; x = vX; y = vY; z += vZ; rz += vRot; return 1; }
-
Gibt es eine Funktion ungefähr so: SetPlayerCameraLookAt(playerid, x, y, z, rotx, roty, rotz); ?
Nein leider nicht aber ich hab dir die kleine Funktion kurz geschrieben
Codestock SetPlayerCameraLookAtEx(playerid, Float:X, Float:Y, Float:Z, Float:RotX, Float:RotY) { SetPlayerCameraPos(playerid, X, Y, Z); X += 10.0 * floatcos(RotX, degrees) * floatcos(RotY, degrees); Y += 10.0 * floatcos(RotX, degrees) * floatsin(RotY, degrees); Z += 10.0 * floatsin(RotX, degrees); SetPlayerCameraLookAt(playerid, X, Y, Z); return 1; }
-
Nutz doch einfach GetPlayerScore beim auslesen anstatt SetPlayerScore
beim Speichern um den Score auszulesen
[wiki]https://wiki.sa-mp.com/wiki/GetPlayerScore[/wiki]