There are basically 2 ways to "mod a mod". Either you get hands on the original source code or you have to delve into the blackbox.
Since the source of Urban Terror is closed-source (except for the engine; which is a fork of the Quake 3 engine, called ioQuake 3), you have to 'delve' into the blackbox.
This involves using a disassembler, which is able to process them .qvm's binary data and yields the assembler logic of the mod. Using this, one is able to make modifications. The "workflow" is quite comparable to "cracking" existing software:
Disassemble the binary. Find the instructions of interest overwritte them.
On the links posted below, you'll find a small guide and a disassembler.
It is important to notice, that the License of the game prohibits ANY modifications.
EDIT: I answered this when I was 14, the original answer isn't good.
But left here "historical" reasons.
Well, never heared about google :) ?
Look at game-deception it explains how to modificate a qvm (' after it
has been compiled '). It just over-compile the certain lines /
commands. The only problem ( for you ) is, that you have to work with
opcodes ( / assembler ). Well, here's the tutorial made by the great
macpunk :
http://www.gamedeception.net/threads/19198-Runtime-QVM-Modification
> vmHeader_t *hook_VM_LoadQVM( vm_t *vm, qboolean alloc )
>
> {
>
> vmHeader_t *ret = orig_VM_LoadQVM(vm, alloc);
>
> if(!strcmp(vm->name, "cgame")
>
> {
>
> vm->instructionPointers[0x0FF5E7] = 0x00; //0x00 is the opcode of whatever you want the instruction to be
>
> }
>
> return ret; }
You need to Quake3 Engine SDK for the structs.