AMX MOD X
Четверг, 18.04.2024, 18:08:11



Приветствую Вас Гость | RSS
[ Главная ] [ Пример передачи строк в task - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Скрипты » Пример передачи строк в task
Пример передачи строк в task
slogicДата: Пятница, 05.10.2007, 14:32:10 | Сообщение # 1
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Скомпилируйте, добавьте плагин в plugins.ini, запустите игру, в консоли наберите:

Code
test_string <произвольный_текст>

Code
/* Stringy Tasks
    *
    * (c) 2007, Orangutanz
    * This file is provided as is (no warranties).
    */

#include <amxmodx>
#include <fakemeta>

#define PLUGINNAME  "Stringy Tasks"
#define VERSION     "1.0.0"
#define AUTHORS     "Orangutanz"

public plugin_init()
{
       register_plugin( PLUGINNAME, VERSION, AUTHORS ) // регистрация плагина
       register_clcmd( "test_string", "str_test" ) // регистрация клиентской команды test_string
}

public str_test( id ) // обработчик команды test_string
{
       // id - индекс игрока (от 1 до 32), который выполнил данную команду

       new string[ 64 ]
       read_argv( 1, string, sizeof( string ) - 1 ) // считываем первый параметр команды

       new param[ 3 ]
       param[ 0 ] = EncodeText( "Hello" )
       param[ 1 ] = EncodeText( string )
       param[ 2 ] = EncodeText( "Goodbye" )

       set_task( 1.0, "string_task", 0, param, sizeof( param ) ) // через 1.0 сек. будет вызвана функция string_task()
         
       return PLUGIN_HANDLED // если этого не сделать, то в консоль будет выдано сообщение о неверной команде
}

public string_task( const param[ 3 ] )
{
       new string[ 64 ]

       for ( new i; i < sizeof( param ); i++ )
       {
           DecodeText( param[i], string, sizeof( string ) - 1 )
           client_print( 0, 3, string )
       }
}

EncodeText( const text[] )
{
       return engfunc( EngFunc_AllocString, text )
}

DecodeText( const text, string[], const length )
{
       global_get( glb_pStringBase, text, string, length )
}

ref: http://forums.alliedmods.net/showthread.php?p=538299#post538299

 
DaTaДата: Воскресенье, 16.12.2007, 19:52:25 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
столько действий, печально :(
ЗЫ не легче использовать глобальный массив строк(двумерный массив), индексы которого будут соответствовать id задачи, думаю не жалко отдать пару килобайт оперативки за быстродействие :)
 
He_npeTДата: Воскресенье, 16.12.2007, 23:56:30 | Сообщение # 3
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
оО, полезный код - много где может пригодиться - спс.

My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
 
slogicДата: Вторник, 01.04.2008, 20:46:48 | Сообщение # 4
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (DaTa)
ЗЫ не легче использовать глобальный массив строк(двумерный массив)

Ну до этого примера я бы так и делал.

ЗЫ. Добавил комментарии на русском. Все-таки обучающий скрипт.

 
DaTaДата: Среда, 02.04.2008, 03:15:35 | Сообщение # 5
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
просто тект же хламится где-то в памяти, может привести к большой утечке... нельзя ли удалять его из памяти?

ЗЫ. Надо попробовать дважды строку получить. Может она освобождается :) хотя я сомневаюсь.

Что это? blink вторую строку в этом сообщении не я писал О_о

Сообщение отредактировал DaTa - Среда, 02.04.2008, 18:03:50
 
slogicДата: Суббота, 12.07.2008, 20:42:19 | Сообщение # 6
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (DaTa)
Может она освобождается хотя я сомневаюсь.

Если память НЕ освобождается, то автор мудак :D
 
AMX Mod X Форум » Скриптинг » Скрипты » Пример передачи строк в task
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024