Beiträge von Kaliber
-
-
lso das das Hintergrundbild im Hintergrund ist und die Tabs auf dem Bild Drauf sind?
Meinst du sowas hier: http://www.w3schools.com/css/css_image_transparency.asp -
limit 1
Ja..aus dem Grund kannst du kein Auto kaufen.if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 0)
Schreib die Zeile so:if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 1)
Dann gehts

mfg.

-
hier?....
Nein...einfach oben kurz unter der Eingabe von dem Befehl
-
PlayerInfo[playerid][pCarLimit]
Printe mal diese Variable...ist sie zufällig nicht auf 0?
//Edit: F0rg0t the n0t
-
if(preis < PlayerInfo[playerid][pBank])
Schau dir doch deinen eigenen Code an
Da steht, du musst das Geld auf der Bank haben...nicht auf der Hand

-
Wie wäre es mit Rundenanzahl und evtl Punkte?

Und du solltest dir vielleicht doch ein wenig Gedanken um die Sicherheit machen, wenn du obiges einfügst

-
-
Vielleicht sagen ja auch noch andere was zu diesen Thema!!!
Dann gib mal ein Code Beispiel, wie du z.B. so ein Objekt erstellst
-
Was kann ich tun, ich sags nochmal.
Nun...du musst bei deinen Objekten CreateDynamicObject nutzen (zum erstellen) und allgemein diesen Streamer verwenden: http://forum.sa-mp.com/showthread.php?t=102865Dann sollte alles wunderbar funktionieren

mfg.

-
SetVehicleToRespawn(i);
Antstatt dem i musst du in der schleife folgendes verwenden:SetVehicleToRespawn(GroveVehs[i]);
mfg.

-
Das kommt darauf an.
Willst du wissen, wer momentan am Meisten kills auf dem Server hat der online ist oder allgemein?
Wer online ist einfach so:
new id;
for(new i,old; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(pInfo[i][pKills] >= old) old = pInfo[i][pKills],id=i;
}printf("Der Spieler mit den meisten Kills ist ID: %d | Kills: %d",id,pInfo[id][pKills]);
Bei dem Allgemein, kommt es auf dein Speicherungssystem an

mfg.

-
GetPlayerName(playerid,playername,sizeof(playername);
Da ist dein Klammerfehler und eine Zeile weiter drunter auch.Da musst du eine ) am Ende noch setzen...

-
Könntest du mal einen Vergleich zwischen dem normalen Umgang mit Enums und dem Enumerator machen ?
Was?
Ein Enum ist ein Enumerator
Das "Enum" ist eine Abkürzung für Enumerator...sowie bool eine Abkürzung für Boolean ist...uswUnd Beispiele wie man das struct Makro nutzt habe ich doch gemacht...es ist nichts anderes als ein Enum, nur dass man die Namen auslesen kann.
mfg.

-
Ich bitte um schnellstmögliche Hilfe.
1. Downloade dir das Streamer Plugin von Incognito und füge es ein.2. Update dein SSCANF Plugin und Include
3. Check ob es funktioniert, wenn nicht, nutzt du kein kompatibles MySQL Include + Plugin.
mfg.

-
Hallo liebe Brotfische, ich stelle euch nun mal eine kleine, aber evtl nützliche Include vor.
Also es geht um folgendes, stellt euch vor ihr habt ein Enum:
enum Hust
{
Name[MAX_PLAYER_NAME],
Level,
Geld,
bool:Erstellt,
Float:p_x,
Float:p_y
};new pInfo[MAX_PLAYERS][Hust];
So, dies ist nun ein einfacher Enumerator.
Man kann über Pawn ja ganz einfach auf die einzelnen Indizes zugreifen: pInfo[playerid][Level] = 1; //usw
Alles schön und gut.
Was diese Include bietet ist eine Funktion um die einzelnen Namen im Enum auszulesen:
const id = 0;
for(new i; i<GetStruct(id); i++)
{
printf("index: %d | Name: %s",i,heap[id][i]);
}/*
Dieser Code gibt in dem Beispiel also aus:
index: 0 | Name: Name
index: 1 | Name: Level
index: 2 | Name: Geld
index: 3 | Name: Erstellt
index: 4 | Name: p_x
index: 5 | Name: p_y
*/Dies bietet neue Möglichkeiten, z.B. beim Debugging oder einfachere Handhabung der Variablen für Speicherungs-Systeme, damit könnte man z.B. das einfach per Schleife alles speichern (mit MySQL).
Ich wollte es euch einfach mal nur Vorstellen das System, falls es jemand benötigt (habe schon mehrmals gelesen, wo sowas gewünscht wurde).
Probleme:
Ihr könnt maximal 8 Indizes in einer Struktur benutzen. Grund dafür ist, dass es maximal nur %0-%9 Unbekannte in einem Makro geben kann.
Desweiteren, dürfen die Variablen Namen nicht solang sein und ihr solltet keine weiteren Makro-Namen in dem Makro selbst nutzen
(Also schreibt anstatt MAX_PLAYER_NAME, direkt 24 einfach.)
Falls ihr zu lange Namen o.ä. verwendet...stürzt euer Compiler ab
Da alles an Makros gebunden ist, muss man leider syntaktisch etwas umdenken.
//Allgemeine Struktur:
struct@anzahl_der_Indizes: Enum_Name { a,b,c,d,e,f } (id);//Beispiele:
struct@1: p_INFO { a } (0); //Es gibt 1nen Index und da es die erste Struktur ist (0) am Ende.struct@2: p_INFO { pMember,pLeader } (1);
struct@5: p_INFO { a,b,c,d,e } (2);
//Weitere Funktionen
GetStruct(id); //Gibt die Anzahl der Indizes wieder
//Bei den Strukturen hier z.B.:
const indizes = GetStruct(2); //würde z.B. hier 5 enthaltenconst id = 1;
//In dieser Variable sind alle Namen gespeichert
heap[id][0]; //Das würde ein "pLeader" ausgeben
heap[id][1]; //das gibt ein "pMember" aus//Oben gezeigtes Beispiel sieht also so aus:
struct@6: Hust { Name[24],Level,Geld,bool:Erstellt,Float:p_x,Float:p_y } (0);Es ist leider sehr stark durch Pawn eingegrenzt inwieweit man sowas nutzen kann.
Ich wollte lediglich mal zeigen, dass es in kleinem Maße funktioniert so etwas zu erstellen.Download:
Source-Code: PasteBin
Direkter-Download: MediaFireSchlusswort:
Ich würde mich über ein paar Rückmeldungen freuen, falls ihr Verbesserungs-Vorschläge habt oder sonst irgendwas einfach, einfach schreiben
mfg.

//Edit: Ich hatte das Beispiel angepasst.
//Edit²: Ich habe das Edit eingefügt. -
Schreibe das mal so:
COMMAND:handschelle(playerid,params[])
{
if(!IsSAPD(playerid)) return SendClientMessage(playerid, Rot, "Du darfst diesen Befehl nicht nutzen!");
new targetid,string[128], PlayerName[MAX_PLAYER_NAME];
if(sscanf(params,"us",targetid,string)) return SendClientMessage(playerid,Grau,"Benutze: /freeze [Spieler id] [Grund]");
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,0xFF7800FF, "Spieler Offline");
TogglePlayerControllable(targetid,0);
SetPlayerSpecialAction(targetid,24);
SetPlayerAttachedObject(targetid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
GetPlayerName(targetid,PlayerName,MAX_PLAYER_NAME);
format(string,sizeof(string),"%s wurde festgenommen Grund: %s",PlayerName,string);
SendClientMessageToAll(Rot,string);
format(string,sizeof(string),"Du Frierst %s.",PlayerName);
SendClientMessage(playerid,Rot,string);
GetPlayerName(playerid,PlayerName,MAX_PLAYER_NAME);
format(string,sizeof(string)," %s Hat dir Handschellen angelegt",PlayerName);
SendClientMessage(targetid,Rot,string);
return 1;
}mfg.

-
z.B. Fliegen können
Es ist nicht alles möglich, aber einiges. Fliegen unter anderem ist möglich.Ein Beispiel Skript für einen flymode gibt es als FilterSkript von h02:
flymode.pwn //-------------------------------------------------
//
// This is an example of using the AttachCameraToObject function
// to create a no-clip flying camera.
//
// h02 2012
//
// SA-MP 0.3e and above
//
//-------------------------------------------------flymode.pwn #include <a_samp>flymode.pwn // Players Move Speed
#define MOVE_SPEED 100.0
#define ACCEL_RATE 0.03flymode.pwn // Players Mode
#define CAMERA_MODE_NONE 0
#define CAMERA_MODE_FLY 1flymode.pwn // Key state definitions
#define MOVE_FORWARD 1
#define MOVE_BACK 2
#define MOVE_LEFT 3
#define MOVE_RIGHT 4
#define MOVE_FORWARD_LEFT 5
#define MOVE_FORWARD_RIGHT 6
#define MOVE_BACK_LEFT 7
#define MOVE_BACK_RIGHT 8flymode.pwn // Enumeration for storing data about the player
enum noclipenum
{
cameramode,
flyobject,
mode,
lrold,
udold,
lastmove,
Float:accelmul
}
new noclipdata[MAX_PLAYERS][noclipenum];flymode.pwn //--------------------------------------------------flymode.pwn public OnFilterScriptExit()
{
// If any players are still in edit mode, boot them out before the filterscript unloads
for(new x; x<MAX_PLAYERS; x++)
{
if(noclipdata[x][cameramode] == CAMERA_MODE_FLY) CancelFlyMode(x);
}
return 1;
}flymode.pwn //--------------------------------------------------flymode.pwn public OnPlayerConnect(playerid)
{
// Reset the data belonging to this player slot
noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
noclipdata[playerid][lrold] = 0;
noclipdata[playerid][udold] = 0;
noclipdata[playerid][mode] = 0;
noclipdata[playerid][lastmove] = 0;
noclipdata[playerid][accelmul] = 0.0;
return 1;
}flymode.pwn //--------------------------------------------------flymode.pwn public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/flymode", true))
{
// Place the player in and out of edit mode
if(GetPVarType(playerid, "FlyMode")) CancelFlyMode(playerid);
else FlyMode(playerid);
return 1;
}
return 0;
}flymode.pwn //--------------------------------------------------flymode.pwn public OnPlayerUpdate(playerid)
{
if(noclipdata[playerid][cameramode] == CAMERA_MODE_FLY)
{
new keys,ud,lr;
GetPlayerKeys(playerid,keys,ud,lr);flymode.pwn if(noclipdata[playerid][mode] && (GetTickCount() - noclipdata[playerid][lastmove] > 100))
{
// If the last move was > 100ms ago, process moving the object the players camera is attached to
MoveCamera(playerid);
}flymode.pwn // Is the players current key state different than their last keystate?
if(noclipdata[playerid][udold] != ud || noclipdata[playerid][lrold] != lr)
{
if((noclipdata[playerid][udold] != 0 || noclipdata[playerid][lrold] != 0) && ud == 0 && lr == 0)
{ // All keys have been released, stop the object the camera is attached to and reset the acceleration multiplier
StopPlayerObject(playerid, noclipdata[playerid][flyobject]);
noclipdata[playerid][mode] = 0;
noclipdata[playerid][accelmul] = 0.0;
}
else
{ // Indicates a new key has been pressedflymode.pwn // Get the direction the player wants to move as indicated by the keys
noclipdata[playerid][mode] = GetMoveDirectionFromKeys(ud, lr);flymode.pwn // Process moving the object the players camera is attached to
MoveCamera(playerid);
}
}
noclipdata[playerid][udold] = ud; noclipdata[playerid][lrold] = lr; // Store current keys pressed for comparison next update
return 0;
}
return 1;
}flymode.pwn //--------------------------------------------------flymode.pwn stock GetMoveDirectionFromKeys(ud, lr)
{
new direction = 0;
if(lr < 0)
{
if(ud < 0) direction = MOVE_FORWARD_LEFT; // Up & Left key pressed
else if(ud > 0) direction = MOVE_BACK_LEFT; // Back & Left key pressed
else direction = MOVE_LEFT; // Left key pressed
}
else if(lr > 0) // Right pressed
{
if(ud < 0) direction = MOVE_FORWARD_RIGHT; // Up & Right key pressed
else if(ud > 0) direction = MOVE_BACK_RIGHT; // Back & Right key pressed
else direction = MOVE_RIGHT; // Right key pressed
}
else if(ud < 0) direction = MOVE_FORWARD; // Up key pressed
else if(ud > 0) direction = MOVE_BACK; // Down key pressed
return direction;
}flymode.pwn //--------------------------------------------------flymode.pwn stock MoveCamera(playerid)
{
new Float:FV[3], Float:CP[3];
GetPlayerCameraPos(playerid, CP[0], CP[1], CP[2]); // Cameras position in space
GetPlayerCameraFrontVector(playerid, FV[0], FV[1], FV[2]); // Where the camera is looking atflymode.pwn // Increases the acceleration multiplier the longer the key is held
if(noclipdata[playerid][accelmul] <= 1) noclipdata[playerid][accelmul] += ACCEL_RATE;flymode.pwn // Determine the speed to move the camera based on the acceleration multiplier
new Float:speed = MOVE_SPEED * noclipdata[playerid][accelmul];flymode.pwn // Calculate the cameras next position based on their current position and the direction their camera is facing
new Float:X, Float:Y, Float:Z;
GetNextCameraPosition(noclipdata[playerid][mode], CP, FV, X, Y, Z);
MovePlayerObject(playerid, noclipdata[playerid][flyobject], X, Y, Z, speed);flymode.pwn // Store the last time the camera was moved as now
noclipdata[playerid][lastmove] = GetTickCount();
return 1;
}flymode.pwn //--------------------------------------------------flymode.pwn stock GetNextCameraPosition(move_mode, Float:CP[3], Float:FV[3], &Float:X, &Float:Y, &Float:Z)
{
// Calculate the cameras next position based on their current position and the direction their camera is facing
#define OFFSET_X (FV[0]*6000.0)
#define OFFSET_Y (FV[1]*6000.0)
#define OFFSET_Z (FV[2]*6000.0)
switch(move_mode)
{
case MOVE_FORWARD:
{
X = CP[0]+OFFSET_X;
Y = CP[1]+OFFSET_Y;
Z = CP[2]+OFFSET_Z;
}
case MOVE_BACK:
{
X = CP[0]-OFFSET_X;
Y = CP[1]-OFFSET_Y;
Z = CP[2]-OFFSET_Z;
}
case MOVE_LEFT:
{
X = CP[0]-OFFSET_Y;
Y = CP[1]+OFFSET_X;
Z = CP[2];
}
case MOVE_RIGHT:
{
X = CP[0]+OFFSET_Y;
Y = CP[1]-OFFSET_X;
Z = CP[2];
}
case MOVE_BACK_LEFT:
{
X = CP[0]+(-OFFSET_X - OFFSET_Y);
Y = CP[1]+(-OFFSET_Y + OFFSET_X);
Z = CP[2]-OFFSET_Z;
}
case MOVE_BACK_RIGHT:
{
X = CP[0]+(-OFFSET_X + OFFSET_Y);
Y = CP[1]+(-OFFSET_Y - OFFSET_X);
Z = CP[2]-OFFSET_Z;
}
case MOVE_FORWARD_LEFT:
{
X = CP[0]+(OFFSET_X - OFFSET_Y);
Y = CP[1]+(OFFSET_Y + OFFSET_X);
Z = CP[2]+OFFSET_Z;
}
case MOVE_FORWARD_RIGHT:
{
X = CP[0]+(OFFSET_X + OFFSET_Y);
Y = CP[1]+(OFFSET_Y - OFFSET_X);
Z = CP[2]+OFFSET_Z;
}
}
}
//--------------------------------------------------flymode.pwn stock CancelFlyMode(playerid)
{
DeletePVar(playerid, "FlyMode");
CancelEdit(playerid);
TogglePlayerSpectating(playerid, false);flymode.pwn DestroyPlayerObject(playerid, noclipdata[playerid][flyobject]);
noclipdata[playerid][cameramode] = CAMERA_MODE_NONE;
return 1;
}flymode.pwn //--------------------------------------------------flymode.pwn stock FlyMode(playerid)
{
// Create an invisible object for the players camera to be attached to
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
noclipdata[playerid][flyobject] = CreatePlayerObject(playerid, 19300, X, Y, Z, 0.0, 0.0, 0.0);flymode.pwn // Place the player in spectating mode so objects will be streamed based on camera location
TogglePlayerSpectating(playerid, true);
// Attach the players camera to the created object
AttachCameraToPlayerObject(playerid, noclipdata[playerid][flyobject]);flymode.pwn SetPVarInt(playerid, "FlyMode", 1);
noclipdata[playerid][cameramode] = CAMERA_MODE_FLY;
return 1;
}flymode.pwn //--------------------------------------------------mfg.

-
Poste mal den Prototype..also suche in deinem Skript forward OnUserCheck(playerid);
mfg.

-
Wie kann ich das hier mit den Menus der Shops verbinden?
Du prüfst ob GetPlayerMoney(playerid) < pInfo[playerid][Geld] ist...falls dies der Fall ist, setzt du pInfo[playerid][Geld] = GetPlayerMoney(playerid)mfg.
