Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
6 odpowiedzi w tym temacie
#1
Napisano 16.10.2011 19:23
Witam szukam pluginy na dm autorespawn który po 1 sek zacznie autorespawn po całej mapie nie tylko na respie ct lub tt
#2
Napisano 16.10.2011 19:49
Łap. SpawnPointy musisz sobie sam ustawić ( komenda "spawnmenu" ). Najpierw stwórz w katalogu configs katalog "AutoRespawn". W nim będą zapisywały sie pliki z nazwami map i miejscami spawnów. Respawn następuje po 1 sec.
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#define MAXSPAWN 10
new Float:g_fOrigins[MAXSPAWN][3];
new g_iAmountSpawn;
public plugin_init() {
register_plugin("AutoRespawn", "0.1", "MarWit")
register_clcmd("spawnmenu", "MenuSpawn", ADMIN_IMMUNITY)
register_event("DeathMsg", "eventDeath", "a");
register_event("TeamInfo", "eventJoinTeam", "a", "2=TERRORIST", "2=CT");
LoadMapConfig()
}
public LoadMapConfig()
{
g_iAmountSpawn = 0;
new szFile[128], szBuffer[128], szArg1[10], szArg2[10], szArg3[10];
get_configsdir(szFile, charsmax(szFile))
get_mapname(szBuffer, charsmax(szBuffer))
format(szFile, charsmax(szFile), "%s/AutoRespawn/%s.ini", szFile, szBuffer)
new iFile = fopen(szFile, "rt")
while(!feof(iFile) && g_iAmountSpawn < MAXSPAWN)
{
fgets(iFile, szBuffer, charsmax(szBuffer))
if(equali(szBuffer, ""))
continue;
replace_all(szBuffer, charsmax(szBuffer), ",", " ")
parse(szBuffer, szArg1, 9, szArg2, 9, szArg3, 9)
g_fOrigins[g_iAmountSpawn][0] = str_to_float(szArg1)
g_fOrigins[g_iAmountSpawn][1] = str_to_float(szArg2)
g_fOrigins[g_iAmountSpawn][2] = str_to_float(szArg3)
g_iAmountSpawn++;
}
fclose(iFile)
}
public SaveMapConfig()
{
new szFile[128], szBuffer[1024]
get_configsdir(szFile, charsmax(szFile))
get_mapname(szBuffer, charsmax(szBuffer))
format(szFile, charsmax(szFile), "%s/AutoRespawn/%s.ini", szFile, szBuffer)
new iFile = fopen(szFile, "wt")
for(new i=0; i<g_iAmountSpawn; i++)
{
if(g_fOrigins[i][0] == 0.0 && g_fOrigins[i][1] == 0.0)
continue;
format(szBuffer, charsmax(szBuffer), "%f,%f,%f^n", g_fOrigins[i][0], g_fOrigins[i][1], g_fOrigins[i][2])
fputs(iFile, szBuffer)
}
fclose(iFile)
}
public eventDeath()
{
if(task_exists(read_data(2))) remove_task(read_data(2))
set_task(1.0, "taskRespawn", read_data(2))
}
public eventJoinTeam(){
new id = read_data(1);
if(task_exists(id)) remove_task(id);
if(!is_user_alive(id)){
taskRespawn(id)
}
return 0;
}
public taskRespawn(id)
{
ExecuteHamB(Ham_CS_RoundRespawn, id)
set_pev(id, pev_origin, g_fOrigins[random_num(0, g_iAmountSpawn)])
}
public MenuSpawn(id)
{
new iMenu = menu_create("MENU NPC", "MenuSpawn_Handle")
menu_additem(iMenu, "Stworz SpawnPoint")
menu_additem(iMenu, "Zapisz")
menu_additem(iMenu, "Przeladuj")
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public MenuSpawn_Handle(id, menu, item)
{
switch(item)
{
case 0: {
if(g_iAmountSpawn == MAXSPAWN) {
client_print(id, print_chat, "[AutoRespawn] Nie mozna ustawic wiecej spawnow!")
return PLUGIN_CONTINUE
}
new Float:fOrigin[3], iOrigin[3];
get_user_origin(id, iOrigin, 3)
IVecFVec(iOrigin, fOrigin)
fOrigin[2] += 30.0
g_fOrigins[g_iAmountSpawn] = fOrigin
g_iAmountSpawn++
}
case 1: {
SaveMapConfig()
}
case 2: {
LoadMapConfig()
}
}
return PLUGIN_CONTINUE
}
Użytkownik MarWit edytował ten post 16.10.2011 19:50
#3
Napisano 03.11.2011 20:04
Plugin działa prawie dobrze.
Owszem tworzy te spawnpointy, ale na jakiej zasadzie je tworzy?
W miejscu gdzie się w momencie wciśnięcia znajdujemy czy może tam gdzie patrzymy celownikiem, bo testowałem go i niektóee spawny zbyt nisko tzn gracz jak się w tym poincie pojawiał czasem był zakopany do połowy nóg i nie mógł się ruszać.
Owszem tworzy te spawnpointy, ale na jakiej zasadzie je tworzy?
W miejscu gdzie się w momencie wciśnięcia znajdujemy czy może tam gdzie patrzymy celownikiem, bo testowałem go i niektóee spawny zbyt nisko tzn gracz jak się w tym poincie pojawiał czasem był zakopany do połowy nóg i nie mógł się ruszać.
#4
Napisano 30.04.2012 06:12
Mi te spawny nie działają
#5
Napisano 30.04.2012 16:54
fOrigin[2] += 30.0Dodajcie więcej np. 50 aby nie był wkopany
@edit
O ku*w.* @up jaki odśwież dopiero zobaczyłem.
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#6
Napisano 30.04.2012 17:57
Odśwież, czy nie, plugin poprawić trzeba ^ ^
Nie wiem tylko czy można coś takiego pisać "g_fOrigins[g_iAmountSpawn++] = fOrigin", że jednemu originowi przypisujemy drugi, bez żadnej pętli.
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#define MAXSPAWN 10
new Float:g_fOrigins[MAXSPAWN][3];
new g_iAmountSpawn;
public plugin_init() {
register_plugin("AutoRespawn", "0.1", "MarWit")
register_clcmd("spawnmenu", "MenuSpawn", ADMIN_IMMUNITY)
register_event("DeathMsg", "eventDeath", "a");
register_event("TeamInfo", "eventJoinTeam", "a", "2=TERRORIST", "2=CT");
LoadMapConfig()
}
public LoadMapConfig()
{
g_iAmountSpawn = 0;
new szFile[128], szBuffer[128], szArg1[10], szArg2[10], szArg3[10];
get_configsdir(szFile, charsmax(szFile))
get_mapname(szBuffer, charsmax(szBuffer))
format(szFile, charsmax(szFile), "%s/AutoRespawn/%s.ini", szFile, szBuffer)
new iFile = fopen(szFile, "rt")
while(!feof(iFile) && g_iAmountSpawn < MAXSPAWN)
{
fgets(iFile, szBuffer, charsmax(szBuffer))
trim(szBuffer);
if(!szBuffer[0] || szBuffer[0] == ';')
continue;
parse(szBuffer, szArg1, 9, szArg2, 9, szArg3, 9)
g_fOrigins[g_iAmountSpawn][0] = str_to_float(szArg1)
g_fOrigins[g_iAmountSpawn][1] = str_to_float(szArg2)
g_fOrigins[g_iAmountSpawn][2] = str_to_float(szArg3)
g_iAmountSpawn++;
}
fclose(iFile)
}
public SaveMapConfig()
{
new szFile[128], szBuffer[1024]
get_configsdir(szFile, charsmax(szFile))
get_mapname(szBuffer, charsmax(szBuffer))
format(szFile, charsmax(szFile), "%s/AutoRespawn/%s.ini", szFile, szBuffer)
new iFile = fopen(szFile, "wt")
for(new i=0; i<g_iAmountSpawn; i++)
{
format(szBuffer, charsmax(szBuffer), "%f %f %f^n", g_fOrigins[i][0], g_fOrigins[i][1], g_fOrigins[i][2])
fputs(iFile, szBuffer)
}
fclose(iFile)
}
public eventDeath()
{
new id = read_data(2);
remove_task(id)
set_task(1.0, "taskRespawn", id)
}
public eventJoinTeam(){
new id = read_data(1);
remove_task(id);
if(!is_user_alive(id)){
taskRespawn(id)
}
return 0;
}
public taskRespawn(id)
{
ExecuteHamB(Ham_CS_RoundRespawn, id)
set_pev(id, pev_origin, g_fOrigins[random(g_iAmountSpawn)])
}
public MenuSpawn(id)
{
new iMenu = menu_create("MENU NPC", "MenuSpawn_Handle")
menu_additem(iMenu, "Stworz SpawnPoint")
menu_additem(iMenu, "Zapisz")
menu_additem(iMenu, "Przeladuj")
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public MenuSpawn_Handle(id, menu, item)
{
switch(item)
{
case 0: {
if(g_iAmountSpawn >= MAXSPAWN) {
client_print(id, print_chat, "[AutoRespawn] Nie mozna ustawic wiecej spawnow!")
return PLUGIN_CONTINUE
}
new Float:fOrigin[3];
pev(id, pev_origin, fOrigin)
fOrigin[2] += 10.0
g_fOrigins[g_iAmountSpawn++] = fOrigin
}
case 1: {
SaveMapConfig()
}
case 2: {
LoadMapConfig()
}
}
return PLUGIN_CONTINUE
}
Nie wiem tylko czy można coś takiego pisać "g_fOrigins[g_iAmountSpawn++] = fOrigin", że jednemu originowi przypisujemy drugi, bez żadnej pętli.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#7
Napisano 01.03.2013 06:14
odświeżam poprawiłby ktoś ten błąd?
bo po padnięciu serwer się crashuje
albo chociaż niech ktoś co ma o tym pojecie naprawi błąd w tym
bo po padnięciu serwer się crashuje
albo chociaż niech ktoś co ma o tym pojecie naprawi błąd w tym
public LoadMapConfig() { g_iAmountSpawn = 0; new szFile[128], szBuffer[128], szArg1[10], szArg2[10], szArg3[10]; get_configsdir(szFile, charsmax(szFile)) get_mapname(szBuffer, charsmax(szBuffer)) format(szFile, charsmax(szFile), "%s/AutoRespawn/%s.ini", szFile, szBuffer) new iFile = fopen(szFile, "rt") while(!feof(iFile) && g_iAmountSpawn < MAXSPAWN) { fgets(iFile, szBuffer, charsmax(szBuffer)) trim(szBuffer); if(!szBuffer[0] || szBuffer[0] == ';') continue; parse(szBuffer, szArg1, 9, szArg2, 9, szArg3, 9) g_fOrigins[g_iAmountSpawn][0] = str_to_float(szArg1) g_fOrigins[g_iAmountSpawn][1] = str_to_float(szArg2) g_fOrigins[g_iAmountSpawn][2] = str_to_float(szArg3) g_iAmountSpawn++; } fclose(iFile) }
Użytkownik danielpl edytował ten post 01.03.2013 06:28
Również z jednym lub większą ilością słów kluczowych: autorespawn
Auto-respawn/AutorespawnNapisany przez Droso, 26.10.2012 huberttm, autorespawn, auto i 2 więcej |
|
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych