Well, entweder wird OnVehicleSpawn beim createn des Cars nicht ausgeführt oder du zerstörst das Auto so direkt wenn du es spawnst
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ich hoffe es findet sich Heute morgen jemand, der mir bei dem Problem helfen kann.
Undzwar wird bei mir das Registriert Datum zwar gespeichert, aber es wird leider bei jedem Login geupdated, dies sollte aber nicht der Fall sein. Und es wird bei den versuchen vom "Einloggen" = pVersuche das Jahr und der Monat in die Tabelle eingetragen.
Script: http://pastebin.com/WYGHNxLj
Hoffe es kann jemand Helfen.
-
Hab den Fehler gefunden
Spoiler anzeigen
new query[450 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pRegDatum` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,[color=#ff0000]query[/color],Spieler[playerid][pLeben],Spieler[playerid][pName]);
mysql_tquery(DBHandle, query, "","");
Das rote

Mit freundlichen Grüßen,
Fabi.StaR -
Alles anzeigen
Hab den Fehler gefunden
Spoiler anzeigen
new query[450 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pRegDatum` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,[color=#ff0000]query[/color],Spieler[playerid][pLeben],Spieler[playerid][pName]);
mysql_tquery(DBHandle, query, "","");
Das rote

Mit freundlichen Grüßen,
Fabi.StaRColor geht in pwn Tags nicht.
Ich helf ihm gerade schon per PN
-
Das rote

Wenn ich dort irgendwas ändere, dann wird garnix in die Tabelle eingetragen
nicht mal der pLastLogin 
-
ich habe dich mal in Skype geaddet

-
mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,Spieler[playerid][pLeben],Spieler[playerid][pName]);
pRegDatum sollte nur beim Registrieren gesetzt werden.
-
Mir kann nicht einer sagen, was hier der Fehler ist?
CodeC:\Users\Chris\Desktop\Scripting\PAWN\Selfmade\gamemodes\script.pwn(256) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 1 Error.
stock Move(){
for(new r=0; r<MAX_ROWS; r++){
new movement = random(100)+1;
if(movement <= 25){
for(new c=0; c<MAX_COUNT; c++){
new this_move = random(100)+1;
if(this_move <= 80){
new hcnt = c + 1;
switch(hcnt){
new newPos;
case 1: {newPos = NextPos(hPosition[r][Pos1]);}
case 2: {newPos = NextPos(hPosition[r][Pos2]);}
case 3: {newPos = NextPos(hPosition[r][Pos3]);}
case 4: {newPos = NextPos(hPosition[r][Pos4]);}
case 5: {newPos = NextPos(hPosition[r][Pos5]);}
case 6: {newPos = NextPos(hPosition[r][Pos6]);}
case 7: {newPos = NextPos(hPosition[r][Pos7]);}
case 8: {newPos = NextPos(hPosition[r][Pos8]);}
case 9: {newPos = NextPos(hPosition[r][Pos9]);}
}
}
}
}
}
return 1;
}Es scheint fast so, als sei es ein Klammerfehler, denn wenn ich die letzte "}" entferne, dann bekomme ich auch keinen Error mehr, aber das kommt mir komisch vor, da die Klammern richtig gesetzt sind.
Sogar Notepad++ hat die richtig gezählt und gedeutet. Kann mir einer sagen, warum dieser Fehler kommt? Das verwirrt mich ein wenig
-
Hey,
habe ein System gescriptet, womit man Objekte ingame erstellen und bearbeiten kann.
Beim Bearbeiten habe ich jedoch ein Problem, und zwar ändert sich die Rotation und Position nicht.
else if(newkeys == KEY_ANALOG_DOWN) //Numpad 2
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx+0.5,ry,rz);
return StopDynamicObject(Objekt[obj][o_obj]);
}
else if(newkeys == KEY_ANALOG_LEFT) //Numpad 4
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz-0.5);
return StopDynamicObject(Objekt[obj][o_obj]);
}
Bei der Veränderung mit "Numpad 4" klappt es, mit "Numpad 2" jedoch nicht..
Ist dort irgendwas dran falsch? -
ErikSon
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.Aber darin besteht nicht das Problem sondern der wert mit dem KEY_ANALOG_DOWN definiert wurde ist eventuell nicht richtig oder das Callback wird nicht aufgerufen.
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.
ahja
if(sscanf(params,"dD",color[0],color[1]))
D ist ein optionaler Specifer bedeutet du kannst color[1] angeben oder nicht es fehlt dort lediglich die Setzung eines Defaultwertes
if(sscanf(params,"dD(-1)",color[0],color[1]))
-
-
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.Aber darin besteht nicht das Problem sondern der wert mit dem KEY_ANALOG_DOWN definiert wurde ist eventuell nicht richtig oder das Callback wird nicht aufgerufen.
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen.
Habe ich beides versucht, klappt jedoch nicht..
Hier nochmal Codeausschnitt:
else if(newkeys & KEY_ANALOG_DOWN) //Numpad 2 (Wird nicht aufgerufen)
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx+0.5,ry,rz);
printf("N2");
return StopDynamicObject(Objekt[obj][o_obj]);
}
else if(newkeys & KEY_ANALOG_LEFT) //Numpad 4 (Wird aufgerufen)
{
if(Spieler[playerid][EObj] <= 0)return 1;
new obj = Spieler[playerid][EObj];
new Float:rx,Float:ry,Float:rz; GetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz);
SetDynamicObjectRot(Objekt[obj][o_obj],rx,ry,rz-0.5);
printf("N4");
return StopDynamicObject(Objekt[obj][o_obj]);
} -
Habe ich beides versucht, klappt jedoch nicht..
Hier nochmal Codeausschnitt:Ich glaube genau lesen ist nicht so deine Stärke ?
Das wird wohl an deiner if-abfrage liegen
zum einen vergleicht man die bit-werte daher nutze den Bitoperator &.Aber darin besteht nicht das Problem
Daher kannst du ja ein printf rein setzen in das Callback und dir newkeys ausgeben. Dann kennst du den Tastenwert vom Numpad 2 dieses kannst du ja nutzen zum vergleichen. -
Die Pfeiltasten + Numpad 2/8 werden nicht erkannt, also es wird nichts in der Konsole ausgegeben..
Bei Numpad 2/8 steht folgendes im Wiki:ZitatOnly detected when "JOYPAD" configuration is selected for controller.
Geht das nicht auch anders?
Die anderen Tasten, wie z.B. Z/H/N werden erkannt, jedoch kann ich die Tasten in meinem System nicht nutzen..
Und warum funktionieren die Pfeiltasten/W/A/S/D nicht, also warum werden die nicht erkannt und ausgegeben? -
Und warum funktionieren die Pfeiltasten/W/A/S/D nicht, also warum werden die nicht erkannt und ausgegeben?
Diese funktionieren jedoch musst du das über OnPlayerUpdate lösen mit der Funktion GetPlayerKey eventuell erkennst du darüber auch die Restlichen Numpad-Tasten.Warum ist das so ?
Das liegt daran das dieses Callback sonst zu oft aufgerufen werden würde(könnte zu laggs führen), daher wurden nur bestimmte Tasten verwendet. -
So Leute.... ich glaube ja ich bin ein Bisschen dumm gerade, aber ich finde einfach meinen Fehler nicht >.>
CreateGroup(ID, Name[])
{
new i = 0;
while(i != MAX_GROUPS)
{
if(!Group[i][gActive])
{
Group[i][gActive] = true;
/////////////////////////////////////
format(Group[i][gName], sizeof (Group[i][gName]), Name);
/////////////////////////////////////
new pName[MAX_PLAYER_NAME];
GetPlayerName(ID, pName, sizeof pName);
format(Group[i][gLeaderName], sizeof Group[i][gLeaderName],pName);
break;
}
++i;
}
return 1;
}
Error in der Format Zeile die einzeln steht:Codeerror 032: array index out of bounds (variable "Group") error 001: expected token: "]", but found "-identifier-" warning 215: expression has no effect error 001: expected token: ";", but found "]" fatal error 107: too many error messages on one line
Hier sonst noch der Enum dazu:
#define MAX_GROUPS 50
enum groups{
gMemberMax = 15,
gName[20],
gLeaderName[MAX_PLAYER_NAME],
bool:gActive = false
}
new Group[MAX_GROUPS][groups]; -
sizeof (Group[i][gName])
Das geht nicht. Ließ dir durch wie enums wirklich funktionieren, dann weisst auch warum.
Trag an Stelle von sizeof (Group[i][gName]) jeweils direkt MAX_PLAYER_NAME ein.
gMemberMax = 15,
Das ist ebenfalls nicht richtig. "Ließ dir durch wie enums wirklich funktionieren, dann weisst auch warum."
Den Wert auf 15 setzen musst du direkt an der Variable, nicht im enum.
Sprich: Group[0..MAX_GROUPS-1][gMemberMax] = 15
Gleich gilt auch für bool:gActive = false
Spoiler anzeigen bool:gActive = false
Das geht zwar, allerdings nicht weshalb du denkst. Durch sonderliche Zufälle klappt es trotzdem//Edit: Rechtschreibung

-
Danke
-
dcmd_pm(playerid,params[])
{
if(!strlen(params)) return
SendClientMessage(playerid, COLOR_WHITE, "** Usage: /pm (PlayerID)");
PMplayer1 = strval(params);
if(PMplayer1 == playerid) return
SendClientMessage(playerid, COLOR_MAUVE, "* You can not send yourself a PM.");
if(!(IsPlayerConnected(PMplayer1) && PMplayer1 != INVALID_PLAYER_ID)) return
SendClientMessage(playerid, red, "** Invalid Player.");
new string[128];GetPlayerName(PMplayer1, PmReceiver, sizeof(PmReceiver));
format(string,sizeof(string),"* PM to %s (ID: %d): %s ", PmReceiver, PMplayer1, ?????); // Was kommt denn hier rein um den Text zu sehen?
SendClientMessage(playerid,grey,string);
return 1;
}Was kommt beim "????" rein um den Text zu sehen?
-
Was kommt beim "????" rein um den Text zu sehen?
Musst es so machen:dcmd_pm(playerid,params[])
{
new PMplayer1,string[128];
if(sscanf(params,"us[128]",PMplayer1,string)) return SendClientMessage(playerid, COLOR_WHITE, "** Usage: /pm (PlayerID) (Text)");
if(PMplayer1 == playerid) return SendClientMessage(playerid, COLOR_MAUVE, "* You can not send yourself a PM.");
if(!(IsPlayerConnected(PMplayer1) && PMplayer1 != INVALID_PLAYER_ID)) return SendClientMessage(playerid, red, "** Invalid Player.");
GetPlayerName(PMplayer1, PmReceiver, sizeof(PmReceiver));
format(string,sizeof(string),"* PM to %s (ID: %d): %s ", PmReceiver, PMplayer1, string); // Was kommt denn hier rein um den Text zu sehen?
SendClientMessage(playerid,grey,string);
return 1;
}mfg.

-
Wie kann man bei OnPlayerText machen das der Name nicht wie z.b. Fabi.StaR angezeigt wird sondern Fabi StaR angezeigt wird?
wäre echt net.
Mit freundlichen Grüßen,
Fabi.StaR
