Retardo(playerid);
if (strcmp("/comando", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid,312.121948,220.038497,882.79730);
Retardo(playerid);
return 1;
}
/*-------------------------*/
else if(PRESSED(KEY_WALK) && IsPlayerInRangeOfPoint(playerid, 5.0, 1772.2819,-1548.3059,9.9063))//Gente fuera dentro
{
SetPlayerPos(playerid,416.2079,158.9610,895.9077);
SetPlayerInterior(playerid, 1);
Retardo(playerid);
}
forward Retardo2(playerid);
stock Retardo(playerid)
{
TogglePlayerControllable(playerid,0); //Congelamos jugador
SetTimerEx("Retardo2",4000,false,"d",playerid); //Ponemos la espera
GameTextForPlayer(playerid, "~y~Espera mientras ~r~ se cargan los objetos", 2000, 6); //Avisamos
return 1;
}
public Retardo2(playerid) //Se acaba la espera
{
TogglePlayerControllable(playerid,1); //Descongelamos
SendClientMessage(playerid, 0xFFFFFFFF, " Objetos cargados correctamente."); //Avisamos
return 1;
}
stock Lag()
{
new v;
do
{
if (v > 1) { v --; }
else if (v < 0) { v ++; }
}
while(v != 3);
return true;
}
La funciуn 'Retardo' puede ser stock ya que no se llama mediante un timer, la excepciуn es Retardo2.
La siguiente funciуn dara un enorme lag al servidor, el FPS de los jugadores bajarб mucho y el server dejara de responder. pawn Код:
|
Tu funciуn sуlo funciona para el id 0, SuperMarioRol.
Tendrнas que usar SetTimerEx. |
Bueno, a mi me los bajo.. Pero quizб sea porque el server al no responder ocupу mas memoria, y lo probй en localhost.
Disculpen. |
new Advertido[MAX_PLAYERS];
public OnPlayerDisconnect(playerid, reason)
{
Advertido[playerid] = 0; //Seteamos la variable a 0
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmd, "/ad", true)){
tmp[0] = strtok(cmdtext, idx);
tmp[1] = strtok(cmdtext, idx);
if(!strlen(tmp[0]) || !strlen(tmp[1]))return SendClientMessage(playerid, COLOR_ROJO, "Usa: /ad [ID] [Razon].");
new id;
new str[128];
id = strval(tmp[0]);
if(IsPlayerConnected(id)){
new name[2][MAX_PLAYER_NAME];
GetPlayerName(playerid, name[0], MAX_PLAYER_NAME);
GetPlayerName(id, name[1], MAX_PLAYER_NAME);
Advertido[id]++;
format(str, 128, "%s ha sido advertido (Razon: %s)(%i/3)", name[1], cmdtext[5+strlen(tmp[0])], Advertido[id]);
SendClientMessage(playerid, COLOR_AZUL, str);
format(str, 128, "Has sido advertido por %s. (Razon: %s.)(%i/3)", name[0], cmdtext[5+strlen(tmp[0])], Advertido[id]);
SendClientMessage(id, COLOR_VERDE_CLARO, str);
format(str, 128, "%s ha sido advertido por %s. (Razon: %s.) (%i/3)", name[1], name[0], cmdtext[5+strlen(tmp[0])], Advertido[id]);
SendClientMessageToAll(COLOR_NARANJA, str);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
PlayerPlaySound(id, 1057, 0.0, 0.0, 0.0);
if(Advertido[id] >= 3)Kick(id);
return 1;
}
return SendClientMessage(playerid, COLOR_ROJO, "El jugador no se encuentra conectado.");
}
//la definiciуn de Strtok
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock FoundCharacter(str[], character[])
{
for(new i = strlen(str); i > 0; i--)
{
if(strfind(str, character, false, i) != -1)
{
return i;
}
}
return -1;
}
new
str[64];
new Frutas[] = {
"Manzana",
"Pera",
"Banana",
"Uvas",
"Fresas"
};
for(new i; i < sizeof(Frutas); i++)
{
format(str, sizeof str,"%s%s,", str, Frutas[i]);
}
/* Print -> Manzana,Pera,Banana,Uvas,Fresas,
Se pretende eliminar la ultma coma. */
new
pos = FoundCharacter(str, ","); // Ahora que tenemos la posicion de la ultima coma.
strdel(str, pos, sizeof(str));
// Print -> Manzana,Pera,Banana,Uvas,Fresas
stock RGBAtoARGB(source)
{
return
((source & 0xFF000000) >> 24) | // Transparencia [A]
((source & 0x00FF0000) >> 8) | // Rojo [R]
((source & 0x0000FF00) << 8) | // Verde [G]
((source & 0x000000FF) << 24); // Azul [B]
}
main()
{
printf("%x %x", 0x66EEAEAA, RGBAtoARGB(0x66EEAEAA));
}
stock RGBAToARGB( rgba )
return rgba >>> 8 | rgba << 24;
stock NombreValido(const name[]) { if(!name[0] || strfind(name, "_") == -1) return 0; else for(new i = 0, len = strlen(name); i != len; i ++) { if((i == 0) && (name[i] < 'A' || name[i] > 'Z')) return 0; else if((i != 0 && i < len && name[i] == '_') && (name[i + 1] < 'A' || name[i + 1] > 'Z')) return 0; else if ((name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.') return 0; } return 1; }
No si esta funciуn ya la postearon en los anteriores mensajes de este post, pero esta funciуn es buena para los servidores roleplay, siempre pedirб la inicial en mayъscula. Quien la creo lo desconozco un amigo que esta usando el gamemode scrp me lo paso me dijo que es bueno y quisiera agradecer a quien creo la funciуn.
Si saben de quien es dнganme! ![]() Code:
stock NombreValido(const name[]) { if(!name[0] || strfind(name, "_") == -1) return 0; else for(new i = 0, len = strlen(name); i != len; i ++) { if((i == 0) && (name[i] < 'A' || name[i] > 'Z')) return 0; else if((i != 0 && i < len && name[i] == '_') && (name[i + 1] < 'A' || name[i + 1] > 'Z')) return 0; else if ((name[i] < 'A' || name[i] > 'Z') && (name[i] < 'a' || name[i] > 'z') && name[i] != '_' && name[i] != '.') return 0; } return 1; } |
// ** INCLUDES #include <a_samp> // ** DEFINES // *** ROLEPLAY NAME TYPES #define ROLEPLAY_NAME_FALSE 0 #define ROLEPLAY_NAME_TRUE 1 #define ROLEPLAY_NAME_UNCAPPED 2 #define ROLEPLAY_NAME_CONTAINS_NUMBERS 3 // ** MAIN main() { print("Loaded \"rp_name_detector.amx\"."); switch(IsRoleplayName("Test_Test")) { case ROLEPLAY_NAME_FALSE: { print("Name is not a roleplay name."); } case ROLEPLAY_NAME_TRUE: { print("Name is a roleplay name."); } case ROLEPLAY_NAME_UNCAPPED: { print("Name is uncapped."); } case ROLEPLAY_NAME_CONTAINS_NUMBERS: { print("Name can't contain numbers."); } } } // ** CALLBACKS public OnGameModeInit() { return 1; } public OnGameModeExit() { return 1; } // ** FUNCTIONS stock IsRoleplayName(player_name[]) { for(new i = 0, j = strlen(player_name); i < j; i ++) { switch(player_name[i]) { case '0'..'9': { return ROLEPLAY_NAME_CONTAINS_NUMBERS; } } } if(65 <= player_name[0] <= 90) { new underscore_1 = strfind(player_name, "_"); if(underscore_1 >= 3) { if(65 <= player_name[underscore_1 + 1] <= 90) { if(strfind(player_name, "_", false, (underscore_1 + 1)) == -1) { if(((strlen(player_name) - underscore_1) - 1) >= 3) { return ROLEPLAY_NAME_TRUE; } } } else { if(((strlen(player_name) - underscore_1) - 1) <= 2) { return ROLEPLAY_NAME_FALSE; } else { return ROLEPLAY_NAME_UNCAPPED; } } } } else { if(strfind(player_name, "_") <= 3) { return ROLEPLAY_NAME_FALSE; } else { return ROLEPLAY_NAME_UNCAPPED; } } return ROLEPLAY_NAME_FALSE; }
#define MAX_WORDS 15
stock GenerateRandomWord(){
new
iKey[MAX_WORDS]
;
for(new i; i != MAX_WORDS; ++i){
iKey[i] = (i % 2 ? random('Z'-'A')+'A' : random('x'-'a')+'a');
}
return iKey;
}
stock ValidateRoleplayName(playerid)
{
new
name[MAX_PLAYER_NAME]
;
GetPlayerName(playerid, name, sizeof(name));
new
new_name[MAX_PLAYER_NAME];
format(new_name, sizeof(new_name), ConvertNameToRoleplay(name));
if(isnull(new_name))
{
return -1;
}
else
{
new tempName[MAX_PLAYER_NAME];
format(tempName, sizeof(tempName), "player_%i", playerid);
SetPlayerName(playerid, tempName);
SetPlayerName(playerid, new_name);
}
return 1;
}
stock ConvertNameToRoleplay(name[])
{
new
pos = strfind(name, "_", true),
new_name[MAX_PLAYER_NAME]
;
if(pos == -1)
{
// his name not is roleplay
return new_name;
}
new
firstChar = GetASCIIDec(name),
firstCharID = 0,
changeFirstChar = -1,
changeSecondChar = -1
;
if(!charIsLetter(firstChar))
{
// his name not is roleplay
return new_name;
}
else{
if(charIsLetterLowercase(firstChar))
{
// Su inicial es minuscula
changeFirstChar = firstChar;
}
}
new secondCharID = pos+1;
if(name[secondCharID] == '\0')
{
// his name not is roleplay
return new_name;
}
else{
new secoundChar = GetASCIIDec(name[secondCharID]);
if(!charIsLetter(secoundChar))
{
// his name not is roleplay
return new_name;
}
else
{
if(charIsLetterLowercase(secoundChar))
{
changeSecondChar = secoundChar;
}
}
}
format(new_name, sizeof(new_name), name);
if(changeFirstChar != -1)
new_name[firstCharID] = GetMayusASCII(changeFirstChar);
if(changeSecondChar != -1)
new_name[secondCharID] = GetMayusASCII(changeSecondChar);
return new_name;
}
stock GetMayusASCII(charid)
{
if(!charIsLetterLowercase(charid))
return charid;
return charid-32;
}
stock GetASCIIDec(str[])
{
new
s[4]
;
format(s, sizeof(s), "%c", str);
format(s, sizeof(s), "%i", s);
return strval(s);
}
stock charIsLetter(decimal)
return decimal >= 65 && decimal <= 90 || decimal >= 97 && decimal <= 122;
stock charIsLetterLowercase(decimal)
return decimal >= 97 && decimal <= 122;
public OnPlayerConnect(playerid)
{
if(ValidateRoleplayName(playerid) == -1)
{
// Nombre no es Ropleay
Kick(playerid);
}
// No es necesario un else, pues si es valido pero no cumple con las mayusculas lo va a kickear nada mas.
}
enum weather_info
{
weather_id,
weather_text[39]
};
static WeatherIDS[][weather_info] =
{
{0,"Blue Sky"},
{1,"Blue Sky"},
{2,"Blue Sky"},
{3,"Blue Sky"},
{4,"Blue Sky"},
{5,"Blue Sky"},
{6,"Blue Sky"},
{7,"Blue Sky"},
{08,"Stormy"},
{09,"Cloudy and Foggy"},
{10,"Clear Blue Sky"},
{11,"Heatwave"},
{17,"Heatwave"},
{18,"Heatwave"},
{12,"Dull, Colourless"},
{13,"Dull, Colourless"},
{14,"Dull, Colourless"},
{15,"Dull, Colourless"},
{16,"Dull, Cloudy, Rainy"},
{19,"Sandstorm"},
{20,"Foggy, Greenish"},
{21,"Very Dark, Gradiented Skyline, Purple"},
{22,"Very Dark, Gradiented Skyline, Purple"},
{23,"Pale Orange"},
{24,"Pale Orange"},
{25,"Pale Orange"},
{26,"Pale Orange"},
{27,"Fresh Blue"},
{28,"Fresh Blue"},
{29,"Fresh Blue"},
{30,"Dark, Cloudy, Teal"},
{31,"Dark, Cloudy, Teal"},
{32,"Dark, Cloudy, Teal"},
{33,"Dark, Cloudy, Brown"},
{34,"Blue/Purple, Regular"},
{35,"Dull Brown"},
{36,"Bright, Foggy, Orange"},
{37,"Bright, Foggy, Orange"},
{38,"Bright, Foggy, Orange"},
{39,"Very Bright"},
{40,"Blue/Purple, Cloudy"},
{41,"Blue/Purple, Cloudy"},
{42,"Blue/Purple, Cloudy"},
{43,"Toxic Clouds"},
{44,"Black/White Sky"},
{700,"Stormy with Pink Sky and Crystal Water"},
{150,"Darkest Weather Ever"}
};
forward RandomWeather();
public RandomWeather()
{
new rand = random(sizeof(WeatherIDS));
new message[51];
format(message, sizeof(message), "Weather changed to %s", WeatherIDS[rand][weather_text]);
SetWeather(WeatherIDS[rand][weather_id]);
SendClientMessageToAll(-1,message);
print(message);
}
public OnFilterScriptInit()
{
SetTimer("RandomWeather", 3 * 3600 * 1000, 1);
}
stock IsFreePath(Float:fX, Float:fY, Float:fZ, const Float:angle, const Float:max_dist, const Float:z_dif = 1.5) { new Float:i, Float:Z, Float:sin = floatsin(-angle, degrees), Float:cos = floatcos(-angle, degrees); for(i = 0.0; i < max_dist; i += 0.25) { MapAndreas_FindZ_For2DCoord(fX + (i * sin), fY + (i * cos), Z); if(Z - fZ < z_dif) continue; return 0; } return 1; }
stock GetFreePath(Float:fX, Float:fY, Float:fZ, Float:angle, const Float:z_dif = 2.0) { new Float:i, Float:Z; for(i = angle; i < 360.0; i += 30.0) { MapAndreas_FindZ_For2DCoord(fX + (5.0 * floatsin(-i, degrees)), fY + (5.0 * floatcos(-i, degrees)), Z); if(Z - fZ < z_dif) { fX += 5.0 * floatsin(-i, degrees); fY += 5.0 * floatcos(-i, degrees); fZ = Z + 0.9; return 1; } } for(new Float:i = 0.0; i < angle; i += 30.0) { MapAndreas_FindZ_For2DCoord(fX + (5.0 * floatsin(-i, degrees)), fY + (5.0 * floatcos(-i, degrees)), Z); if(Z - fZ < z_dif) { fX += 5.0 * floatsin(-i, degrees); fY += 5.0 * floatcos(-i, degrees); fZ = Z + 0.9; return 1; } } return 0; }