Es gibt auch ein anderes Callback, welches OnPlayerPickUpDynamicPickup heißt und aufgerufen wird wenn der spieler ein pickup betritt welches über den streamer läuft also
mit CreateDynamicPickup erstellt wurde
Beiträge von IPrototypeI
-
-
Beim schneller drauf schauen würde ich sagen das hier der fehler liegt
~g~%i~zu
~g~%i
gerade bei Sonderzeichen passiert das ist auch nicht anders als bei einem gametext
-
Okay vielen Dank dann werde ich das so nutzen.
Hier sind noch ein beispiel Skript dazu
http://www.strickenkid.com/mys…gin/callback_examples.pwn
http://www.strickenkid.com/mysql_plugin/example.pwn
www.strickenkid.com
-
Dann würde es jedoch im Firefox sehr unschön aussehen.
Ich bin zwar kein Fan von Firefox, aber das sehen viele andersMit 60px ist bei firefox nicht nachgeholfen
Auflösung 1440 x 900
-
Ja das ist richtig. Du kannst ja noch zusätzlich dein querys posten welches ausgeführt wird wenn der spieler dne Server verlässt und der SQL Befehl UPDATE verwendet wird.
weil wenn SpielerInfo[pID][Banngrund] genauso gespeichert wird wie SpielerInfo[pID][pBann] dann passt dies so. -
Das Callback wird immer aufgerufen daher bietet sich da eher an was du als zweites query gepostet hast und dahinter halt noch einen wert setzen
weil dann kannst du direkt das abprüfen
mysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert2",-1);
public OnMysqlQuery(resultid, spareid, MySQL:handle)
{
if(resultid == -1)return 1;
return 1;
}
ahja benutz switch das ist schneller in pawn als else if//edit
normal dürfte er nicht deswegen meckern
mysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert2",-1);falls doch musst du das dahinter ausfüllen
mysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert2",-1,-1,connection);
oder via #define
#define NONE -1,-1,connectionmysql_query("Update Tabelle SET spalte = Wert Where Spalte = Wert2",NONE);
-
Falls du eine Spalte mit dem Namen Banngrund schon besitzt und du auch einer variabel hast mit dem namen
SpielerInfo[pID][pBann] was in deinem Update query wahrscheinlich verwendet wird wirst du bestimmt auch einen string deklariert haben im jeweiligen enum
was SpielerInfo als index dient.Das brauchst du nur noch strcat verwenden und den grund welchen du eingibst zusammenfügen
strcat(SpielerInfo[pID][UNKNOWN],reason); -
1. Lese dir das durch
[ SCRIPTING ] [MySQL] OnQueryFinish - Performance verbessern!2. Beispiel:
enum {
MYSQL_RESULT_LOGIN = 0,
MYSQL_RESULT_CARS = 1,
}Das ganze verbraucht kein speicher enthält jedoch zahlen die sich automatisch erhöhen.
Das = 0 und = 1 ist zur verdeutlichung daher beim einfügen nicht beachten.Query:
mysql_query("SELECT * FROM `accounts` WHERE `name` = 'Simon' LIMIT 1", MYSQL_RESULT_LOGIN, playerid, connection);
Absenden eines Querys der erste wert danach ist die resultid danach die spareid hier wird der wert hinter playerid genutzt und die verbindungsidpublic OnMysqlQuery(resultid, spareid, MySQL:handle) {
mysql_store_result(handle);
new buffer[64];
switch(resultid){
case MYSQL_RESULT_LOGIN:{
mysql_fetch_row(buffer, "|", handle);
sscanf(buffer,"p<|>e<s[128]dliff>",PlayerInfo[spareid]);
}
case MYSQL_RESULT_LOGIN:{....
}
return mysql_free_result(handle);
}Jetzt gibt es dazu noch OnMysqlQueryArray
mysql_query("SELECT * FROM `accounts` WHERE `name` = 'Simon' LIMIT 1", MYSQL_RESULT_LOGIN, {playerid,pID,pID2}, connection);
public OnMysqlQueryArray(resultid, extravars[], MySQL:handle)
{
mysql_store_result(handle);
new buffer[64];
switch(resultid){
case MYSQL_RESULT_LOGIN:{
mysql_fetch_row(buffer, "|", handle);
sscanf(buffer,"p<|>e<s[128]dliff>",PlayerInfo[extravars[0]]);
sscanf(buffer,"p<|>e<s[128]dliff>",PlayerInfo[extravars[1]]);
sscanf(buffer,"p<|>e<s[128]dliff>",PlayerInfo[extravars[2]]);
}
case MYSQL_RESULT_LOGIN:{....
}
return mysql_free_result(handle);
} -
Abgesehen davon das es 2.31 ist das semicolon noch weg gehört und der code auch überall zufinden ist
und sich noch auf die aussage bezieht http://www.vb-paradise.de/prog…b3-sha1-verschluesselung/
ja ist es ganz zutreffend -
Mit Md5 kommst du nicht weit solang du das nicht umstellst.
WBB benutz einen double-salted-sha1-hash
die Verschlüsslung also besser gesagt die .php datei die dafür verantwortlich istfindest du unter
wcf => lib =>util => StringUtil.class.php.mysql_query("INSERT INTO `DTuser` (`Name`,`Passwort`) VALUES ('Johannes',sha1(CONCAT(SALT, sha1(CONCAT(SALT,sha1( 'MD5Key')))));", (-1), (0), SQL);
2 mal gehasht mit sha1 und 2 mal gesalted -
Hm Fail, lag tatsächlich daran :o
Noch ne andere Frage, wie kann ich es machen, wenn der Spieler aus dem Rage draußen ist,
dass er dann die Musik nicht mehr hört? :oWenn ich das richtig verstanden habe streamst du die music beim login ein oder wie dann musst du nur den stream abspielen
sollte das doch so gemeint sein wie es dem code entspricht
benötigst du noch eine spielervariabel
new bool:ListenMusic[MAX_PLAYERS char];new Float:Pos[3],i;
GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]);
for(; i < MAX_PLAYERS; ++i) {
if(!IsPlayerConnected(i))continue;
if(IsPlayerInRangeOfPoint(i, 5, Pos[0],Pos[1],Pos[2])) {
if(ListenMusic{i})continue;
ListenMusic{i} = true;
StopAudioStreamForPlayer(i);
PlayAudioStreamForPlayer(i, "http://listen.technobase.fm/dsl.pls");
SendClientMessage(playerid,0x00FFFAFF,"Du hast TechnoBase.FM eingeschaltet!");
}else if(ListenMusic{i}) {
ListenMusic{i} = false;
StopAudioStreamForPlayer(i);
}
}damit kannst du zuzüglich abprüfen ob der spieler in der nähe ist wenn ja wird das ganze nur einmal eingestreamt und du bekommst nur einmal die message
sonst überspringt er immer die id in der for-schleife sollte er in der nähe sein. sollte er nicht mehr in der nähe sein bleibt die id noch auf 1 das kann man abfragen und diese zurück setzen und den audiostream abschalten. -
GetVehicleHealth(PlayerCar[playerid][x][CarId], Speedo_HP) returnt auch noch die hp anzahl des fahrzeuges es wird an das zweite argument zurück gegeben hier
Speedo_HP -
Habs nu raus geht aber noch nicht?Wie wäre es wenn du auch einen string ausgegeben lässt der auch was beinhaltet und nicht leer ist
-
die mysql_connect Verbindungen lasse ich natürlich in OnGameModeExit mit mysql_close beenden. Mein Problem ist nur, dass seitdem ich Threaded-Queries nutze, dass er wegen diesen er unnötig weitere Verbindungen aufmacht, aber diese nicht wieder schließt.
Oder wie kann ich von einer Threaded-Query die VerbindungsID erhalten?
Ich geh eher davon aus das dieses MySQL Plugin Version von BlueG nicht mit mehreren verbindungen klar kommt du kannst ja mal testen ob dies auch bei nur einer erstellten Verbindung weitere Aufbaut und auch die Version mal ändern / die alte r7 version nutzen. Da es umgewöhnlich ist das er die nicht wieder schließt
-
Du kannst die anderen verbindungen wieder schließen mit
mysql_close(verbindungsid);
Ich denk mal das er neue verbindungen wieder erstellt wenn du den server restartest da kannst überprüfen ob die verbindung besteht mit mysql_ping() wenn ja passt es wenn nicht einfach eine neue verbindung aufbauen oder verbindet er permanent neu. -
mit dem Slashzeichen sollte man vorsichtig sein in PAWN
format(string2, sizeof string2, "{00FF00}*Projektleiter:{FFFFFF}\
\t\t\tLegend.\
\n{00FF00}*Scripter:{FFFFFF}\t\t\t Legend\
\n{00FF00}*Mapper:{FFFFFF}\t\t\t\t -");fehler womit er nicht zurecht kommt \- \t\
-
Du drückst beim laufen schon die richtige taste, die leertaste
-
Das soll ja in dem sinne auch nix wirkliches bringen außer das dir ausgegeben wird warum dein Bot vom sevrer gekickt wird.
[rRP]Jack danke für die Ergänzung hab das vergessen noch dazu zu schreiben -
new Keys,up,down;
GetPlayerKeys(playerid,Keys,up,down);
new Float:x,Float:y,Float:z;
if(Keys & 8)
{
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{GetPlayerVelocity(playerid,x,y,z);
SetPlayerVelocity(playerid,x*1.2,y*1.2,z*1.2);
}
}
else if(Keys & 128)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
SetVehicleVelocity(GetPlayerVehicleID(playerid),x*1.2,y*1.2,z*1.2);
}
}Es gibt kein kombinierten bitoperator mit &. & soll AND heißen und sind die bitwerte gleich so wird 1 zurück gegeben wenn nicht 0.
-
Da stellt sich immer zuerst die Fragen . Recordfile vorhanden , maxnpc gesetzt in der server.cfg.
Du kannst dir ja zusätzlich noch den grund ausgeben lassen warum er vom server unten ist
public OnNPCDisconnect(reason[])
{
printf("%s", reason);
}